无法实现 grunt-connect-proxy

2024-04-10

为了 '/' (http://127.0.0.1:9000/)我得到的路线

不能获取 /

对于 /v1 路线我得到

未找到

在此服务器上找不到请求的 URL /v1。

这是我的 Gruntfile.js:

// Generated on 2013-10-08 using generator-webapp 0.4.3
'use strict';

// # Globbing
// for performance reasons we're only matching one level down:
// 'test/spec/{,*/}*.js'
// use this if you want to recursively match all subfolders:
// 'test/spec/**/*.js'


/*============================================
=            Expose Prxy Function            =
============================================*/

var proxySnippet = require('grunt-connect-proxy/lib/utils').proxyRequest;

/*-----  End of Expose Prxy Function  ------*/



module.exports = function (grunt) {
    // show elapsed time at the end
    require('time-grunt')(grunt);
    // load all grunt tasks
    require('load-grunt-tasks')(grunt);



    /*======================================
    =            load the proxy            =
    ======================================*/
    
    grunt.loadNpmTasks('grunt-connect-proxy');
    
    /*-----  End of load the proxy  ------*/




    grunt.initConfig({
        // configurable paths
        yeoman: {
            app: 'app',
            dist: 'dist'
        },
        watch: {
            compass: {
                files: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'],
                tasks: ['compass:server', 'autoprefixer']
            },
            styles: {
                files: ['<%= yeoman.app %>/styles/{,*/}*.css'],
                tasks: ['copy:styles', 'autoprefixer']
            },
            livereload: {
                options: {
                    livereload: '<%= connect.options.livereload %>'
                },
                files: [
                    '<%= yeoman.app %>/*.html',
                    '.tmp/styles/{,*/}*.css',
                    '{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js',
                    '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
                ]
            }
        },
        connect: {

            options: {
                port: 9000,
                livereload: 35729,
                // change this to '0.0.0.0' to access the server from outside
                hostname: 'localhost'
            },

            /*===============================
            =            Proxies            =
            ===============================*/
            
            proxies: [
                {
                    context: '/v1',
                    host: 'apples.dev',
                    port: 80,
                    https: false,
                    changeOrigin: true,
                    xforward: false
                }
            ],

            /*-----  End of Proxies  ------*/


            livereload: {
                options: {
                    middleware: function (connect, options) {
                        return [
                            proxySnippet,
                            connect.static('<%= yeoman.app %>'),
                            connect.static('.tmp'),
                        ];

                    },
                    open: true,
                    base: [
                        '.tmp',
                        '<%= yeoman.app %>'
                    ],
                }
            },

            // livereload: {
            //     options: {
            //         open: true,
            //         base: [
            //             '.tmp',
            //             '<%= yeoman.app %>'
            //         ]
            //     }
            // },


            test: {
                options: {
                    base: [
                        '.tmp',
                        'test',
                        '<%= yeoman.app %>'
                    ]
                }
            },
            dist: {
                options: {
                    open: true,
                    base: '<%= yeoman.dist %>'
                }
            }
        },
        clean: {
            dist: {
                files: [{
                    dot: true,
                    src: [
                        '.tmp',
                        '<%= yeoman.dist %>/*',
                        '!<%= yeoman.dist %>/.git*'
                    ]
                }]
            },
            server: '.tmp'
        },
        jshint: {
            options: {
                jshintrc: '.jshintrc'
            },
            all: [
                'Gruntfile.js',
                '<%= yeoman.app %>/scripts/{,*/}*.js',
                '!<%= yeoman.app %>/scripts/vendor/*',
                'test/spec/{,*/}*.js'
            ]
        },
        mocha: {
            all: {
                options: {
                    run: true,
                    urls: ['http://<%= connect.test.options.hostname %>:<%= connect.test.options.port %>/index.html']
                }
            }
        },
        compass: {
            options: {
                sassDir: '<%= yeoman.app %>/styles',
                cssDir: '.tmp/styles',
                generatedImagesDir: '.tmp/images/generated',
                imagesDir: '<%= yeoman.app %>/images',
                javascriptsDir: '<%= yeoman.app %>/scripts',
                fontsDir: '<%= yeoman.app %>/styles/fonts',
                importPath: '<%= yeoman.app %>/bower_components',
                httpImagesPath: '/images',
                httpGeneratedImagesPath: '/images/generated',
                httpFontsPath: '/styles/fonts',
                relativeAssets: false,
                assetCacheBuster: false
            },
            dist: {
                options: {
                    generatedImagesDir: '<%= yeoman.dist %>/images/generated'
                }
            },
            server: {
                options: {
                    debugInfo: true
                }
            }
        },
        autoprefixer: {
            options: {
                browsers: ['last 1 version']
            },
            dist: {
                files: [{
                    expand: true,
                    cwd: '.tmp/styles/',
                    src: '{,*/}*.css',
                    dest: '.tmp/styles/'
                }]
            }
        },
        // not used since Uglify task does concat,
        // but still available if needed
        /*concat: {
            dist: {}
        },*/
        rev: {
            dist: {
                files: {
                    src: [
                        '<%= yeoman.dist %>/scripts/{,*/}*.js',
                        '<%= yeoman.dist %>/styles/{,*/}*.css',
                        '<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp}',
                        '<%= yeoman.dist %>/styles/fonts/{,*/}*.*'
                    ]
                }
            }
        },
        useminPrepare: {
            options: {
                dest: '<%= yeoman.dist %>'
            },
            html: '<%= yeoman.app %>/index.html'
        },
        usemin: {
            options: {
                dirs: ['<%= yeoman.dist %>']
            },
            html: ['<%= yeoman.dist %>/{,*/}*.html'],
            css: ['<%= yeoman.dist %>/styles/{,*/}*.css']
        },
        imagemin: {
            dist: {
                files: [{
                    expand: true,
                    cwd: '<%= yeoman.app %>/images',
                    src: '{,*/}*.{png,jpg,jpeg}',
                    dest: '<%= yeoman.dist %>/images'
                }]
            }
        },
        svgmin: {
            dist: {
                files: [{
                    expand: true,
                    cwd: '<%= yeoman.app %>/images',
                    src: '{,*/}*.svg',
                    dest: '<%= yeoman.dist %>/images'
                }]
            }
        },
        cssmin: {
            // This task is pre-configured if you do not wish to use Usemin
            // blocks for your CSS. By default, the Usemin block from your
            // `index.html` will take care of minification, e.g.
            //
            //     <!-- build:css({.tmp,app}) styles/main.css -->
            //
            // dist: {
            //     files: {
            //         '<%= yeoman.dist %>/styles/main.css': [
            //             '.tmp/styles/{,*/}*.css',
            //             '<%= yeoman.app %>/styles/{,*/}*.css'
            //         ]
            //     }
            // }
        },
        htmlmin: {
            dist: {
                options: {
                    /*removeCommentsFromCDATA: true,
                    // https://github.com/yeoman/grunt-usemin/issues/44
                    //collapseWhitespace: true,
                    collapseBooleanAttributes: true,
                    removeAttributeQuotes: true,
                    removeRedundantAttributes: true,
                    useShortDoctype: true,
                    removeEmptyAttributes: true,
                    removeOptionalTags: true*/
                },
                files: [{
                    expand: true,
                    cwd: '<%= yeoman.app %>',
                    src: '*.html',
                    dest: '<%= yeoman.dist %>'
                }]
            }
        },
        // Put files not handled in other tasks here
        copy: {
            dist: {
                files: [{
                    expand: true,
                    dot: true,
                    cwd: '<%= yeoman.app %>',
                    dest: '<%= yeoman.dist %>',
                    src: [
                        '*.{ico,png,txt}',
                        '.htaccess',
                        'images/{,*/}*.{webp,gif}',
                        'styles/fonts/{,*/}*.*',
                        'bower_components/sass-bootstrap/fonts/*.*'
                    ]
                }]
            },
            styles: {
                expand: true,
                dot: true,
                cwd: '<%= yeoman.app %>/styles',
                dest: '.tmp/styles/',
                src: '{,*/}*.css'
            }
        },
        modernizr: {
            devFile: '<%= yeoman.app %>/bower_components/modernizr/modernizr.js',
            outputFile: '<%= yeoman.dist %>/bower_components/modernizr/modernizr.js',
            files: [
                '<%= yeoman.dist %>/scripts/{,*/}*.js',
                '<%= yeoman.dist %>/styles/{,*/}*.css',
                '!<%= yeoman.dist %>/scripts/vendor/*'
            ],
            uglify: true
        },
        concurrent: {
            server: [
                'compass',
                'copy:styles'
            ],
            test: [
                'copy:styles'
            ],
            dist: [
                'compass',
                'copy:styles',
                'imagemin',
                'svgmin',
                'htmlmin'
            ]
        },
        bower: {
            options: {
                exclude: ['modernizr']
            },
            all: {
                rjsConfig: '<%= yeoman.app %>/scripts/main.js'
            }
        }
    });

    grunt.registerTask('server', function (target) {
        if (target === 'dist') {
            return grunt.task.run(['build', 'connect:dist:keepalive']);
        }

        grunt.task.run([
            'clean:server',
            'concurrent:server',
            'autoprefixer',
            'configureProxies',
            'connect:livereload',
            'watch'
        ]);
    });

    grunt.registerTask('test', [
        'clean:server',
        'concurrent:test',
        'autoprefixer',
        'connect:test',
        'mocha'
    ]);

    grunt.registerTask('build', [
        'clean:dist',
        'useminPrepare',
        'concurrent:dist',
        'autoprefixer',
        'concat',
        'cssmin',
        'uglify',
        'modernizr',
        'copy:dist',
        'rev',
        'usemin'
    ]);

    grunt.registerTask('default', [
        'jshint',
        'test',
        'build'
    ]);
};

只是为了澄清: apples.dev:80 是本地虚拟主机,“/v1”包含所有其余资源。


考虑到 /v1 路由,结果发现这是 Apache 虚拟主机配置错误。

至于'/'(http://127.0.0.1:9000/) 路线,而不是这个:

                middleware: function (connect, options) {
                    return [
                        proxySnippet,
                        connect.static('<%= yeoman.app %>'),
                        connect.static('.tmp')
                    ];

                },

我用这个使它工作:

             middleware: function (connect, options) {
                var middlewares = [];
                options.base.forEach(function(base) {
                    // Serve static files.
                    middlewares.push(connect.static(base));
                });
                middlewares.push(proxySnippet);
                return middlewares;                        
             };

现在..如果有人能告诉我..有什么区别?!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法实现 grunt-connect-proxy 的相关文章

  • jenkins 发送到以下无效地址时出错:[电子邮件受保护]

    Jenkins 在完成测试执行后给出以下内容 发送到以下无效地址时出错 有效的电子邮件 ID 詹金斯构建日志 Build step Execute shell marked build as failure Email was trigge
  • 使用 Yeoman 禁用 LiveReload

    在 IE8 中测试时 LiveReload 会抛出错误 因为不支持 Web 套接字 有没有办法配置 yeoman 来禁用 LiveReload Yeoman 不支持 IE8 这是有充分理由的 但是 您可以执行艾伦描述的操作 或者您可以覆盖s
  • Mac OS Mavericks 上的 NPM 安装问题

    我正在尝试掌握 AngularJS NodeJS 和 Ruby on Rails 当尝试安装 yeoman grunt 等 npm 软件包时 我在终端中收到一个错误 如下所示 npm ERR Error EACCES open Users
  • Grunt-cli 和 Grunt - 相同的应用程序,两个版本?

    Achtung 接受的答案回答了我当时的问题 但现在已经过时了 当时 grunt cli 使用 grunt 但有另一个分支 未被接受的答案会告诉你今天的情况 Question grunt cli 和 grunt 有什么联系和区别 看似是同一
  • Grunt connect-modrewrite 不起作用

    我使用生成器角度来创建我的项目 我使用 HTML5 历史记录 locationProvider html5Mode true hashPrefix 对于 url 重写 我使用连接 modrewrite https npmjs org pac
  • 配置 grunt 复制任务以排除文件/文件夹

    我已经安装了 grunt 任务grunt contrib copy 我把它嵌入到我的Gruntfile js并通过加载任务grunt loadNpmTasks grunt contrib copy 目前 我使用以下配置来创建一个包含 js
  • 处于咕噜模式的猪

    我在windows中安装了cygwin hadoop和pig 配置看起来不错 因为我可以在批处理和嵌入模式下运行 Pig 脚本 当我尝试以 grunt 模式运行 pig 时 发生了一些奇怪的事情 让我解释 我尝试运行一个简单的命令 例如 g
  • 以编程方式设置 grunt 任务的选项?

    我有一个繁琐的任务 查看选项grunt option foo 如果我从以下位置调用此任务grunt task run my task 我怎样才能改变这些论点 我正在寻找类似的东西 grunt task run my task foo bar
  • Bower、Grunt 和 zsh:未找到命令:

    我已经安装了 Grunt Bower 我正在使用 ZSH 当我打字时bower help or grunt anything I get zsh command not found bower or zsh command not foun
  • Grunt 构建在 Yo Angular 中不起作用

    我用 Yo 角度生成器构建了一个 Angular 应用程序 我正在使用 Grunt Build 构建应用程序 然后添加了 Bootstrap 3 以及 npm install grunt bower install 我将这些行添加到 Gru
  • 如何使用 grunt-sass 编译多个 scss 文件

    我正在尝试将多个 scss 文件编译为单个 CSS 文件 这实际上有效 但只获取第一个文件 sass Task dist files css test css sass scss 我们没有安装 ruby 所以 grunt contrib s
  • 生成器完成后调用自耕农生成器

    我希望在第一个生成器完成安装后调用另一个 yeoman 生成器 这将基于我对其中一个提示给出的答案 我尝试在最后调用它 end function this installDependencies callback function if t
  • 当项目中有多个文件时,如何使用 Grunt 配置 LESS 的 sourceMap?

    我有多个 less 文件 我希望将它们处理为匹配的 css 每个文件的 sourceMaps 都与源位于同一文件夹中 这有多难 我用 less 直接执行此操作没有问题 但无法弄清楚如何在 grunt contrib less 中执行此操作
  • 警告:尝试多次加载角度。角JS

    我试图在运行 Grunt Build 后查看我的应用程序 我使用 gruntserve dist 来查看所有生产就绪的构建 但在浏览器中我得到一个无限循环 警告 尝试多次加载角度 我读到发生这种情况是因为 TemplateURL 连接后可能
  • grunt-wiredep 对具有不同依赖关系的多个文件

    目前的项目结构有点像这样 index html bower json bower components 建议的项目结构将在项目根目录中添加更多静态 html 文件 到目前为止 我一直在管理 Bower json 中的所有前端依赖项 并使用
  • 是什么原因导致 grunt.js 中的 /*global module: false*/

    许多 grunt js 脚本以以下内容开头 global module false module exports function grunt 但是第一行注释的原因是什么 它是 JSLint 或 JSHint 的指令 它告诉 JSLint
  • 无法在 Karma 中安装 phantomJS

    WARN config config configure is deprecated please use config set instead WARN plugin Cannot find plugin karma phantomjs
  • 为什么 Yeoman 构建时没有字形图标?

    我正在研究一个webapp发电机及运行后grunt我有一个可以正确显示字体的功能应用程序 然而 当我检查dist 目录我没有得到任何字体文件 文档指出grunt命令build the application for deployment 但
  • 有没有等效的 gulp 插件来执行“grunt Bower”?

    With grunt 我可以使用命令grunt bower 由 提供grunt bower requirejs https github com ck86 gulp bower files 自动生成RequireJS我本地的配置文件bowe
  • 适用于多应用项目的 Grunt 和 requirejs 优化器

    我在让 Grunt 对具有以下结构的项目执行 requirejs 优化时遇到问题 static js apps app js dash js news js many more app files build collections lib

随机推荐

  • ECS 服务 - 使用新的 Docker 映像自动部署

    我想通过使用最新的 Docker 映像启动我的 ECS 服务来自动部署应用程序 据我了解 部署新镜像版本的方法如下 创建新的任务修订版 更新 Docker 存储库上的映像后 更新服务并指定新版本 这似乎可行 但我想通过 CLI 来完成这一切
  • SHA256CryptoServiceProvider 和相关的可以在 WinXP 上使用吗?

    是否可以在 Windows XP 上使用 SHA256CryptoServiceProvider 和相关 SHA2 提供程序 我知道提供商使用 Vista 及更高版本中包含的加密服务 是否可以在 Microsoft XP 中安装这些服务 E
  • 在 Objective-C 中存储和检索数字对的快速方法

    我正在实现排队洪水填充算法 需要存储和检索数字对NSMutableArray 基本上 我正在创建一个数组 m queue NSMutableArray array 然后有时我填充数组 m queue addObject NSValue va
  • 下载时出错

    下载控制台会返回以下错误 帧加载因策略更改而中断 Example a href app exe Start Download a Console Preview 我应该在中配置一些东西吗Compiler or QWeb设置 我发现了 在传统
  • 无法使用 Windows 10 移动技术预览版将通用应用程序部署到手机

    我已解锁开发者卢米亚 635昨天刚刚更新为Windows 10 移动版技术预览版 http windows microsoft com en us windows preview download phone 操作系统版本 10 0 125
  • Perl 构造函数应该返回 undef 或“无效”对象吗?

    Question 什么被认为是 最佳实践 and why 处理构造函数中的错误 最佳实践 可以引用 Schwartz 的话 或者 50 的 CPAN 模块使用它 等等 但我对任何人提出的合理意见感到满意 即使它解释了为什么常见的最佳实践并不
  • 无法在 Primefaces RequestContext.execute() 调用中显示对话框

    我有一个选项卡视图 只要用户选择该选项卡 我就想在其中刷新该选项卡的内容 我还希望在刷新选项卡时弹出模式对话框 这是带有 tabChange ajax 事件处理程序的 tabView
  • 日语/字符的编程技巧[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个想法 可以编写一些网络应用程序来帮助我 也许还有其他人 更好地学习日语 因为我正在学习日语 我的问题是该网站主要是英文的 所以
  • 从 for 循环 Python 将数字列表打印为数组

    使用下面的代码 它会一一打印值 phase 我正在尝试将这些值打印为 for 循环之外的数组 import math Period 6 2 time1 datafile1 0 magnitude1 datafile1 1 for i in
  • Swift REPL:如何保存/加载 REPL 状态? (又名挂起/恢复、快照、克隆)

    在 Swift REPL 中 保存 REPL 状态的方法是什么 例如 我想在 REPL 中做一堆工作 然后保存它 以便稍后加载 这个概念可能被命名为保存 加载 挂起 恢复 快照 克隆 序列化 反序列化等 任何让我实现这一目标的解决方案都会有
  • python中的单词排序

    在Python中是否可以不根据英语字母表而是根据自己创建的字母表对单词列表进行排序 您通常可以定义自定义比较方法 以便在您的限制范围内执行排序 我一生中从未编写过一行 Python 代码 但它与 Ruby 非常相似 让我注意到以下摘录自这一
  • gluUnProject Android OpenGL ES 1.1 用法

    我正在尝试使用 gluUnProject 将 Windows 坐标转换为世界坐标 我不想在模拟器或旧版 Android 系统 使用 OpenGL ES v1 0 中获取工作示例 这不是关于 GL 函数可用性的问题 我正在尝试使用 OpenG
  • 逻辑或运算符与按位或运算符

    有谁知道为什么 if false true true System out println True else System out println False Print True if false true true System ou
  • 如何在 Rails 中发送简单的 json 响应?

    我需要发送 json 响应取决于用户在输入中输入的数据 但我无法发送简单的 json 请求 我关注了这篇文章 http paydrotalks com posts 45 standard json response for rails an
  • MSI 安装程序自定义操作身份问题

    我正在创建一个在数据库上执行脚本的自定义操作 问题是 connectios 使用集成安全性 因此当我尝试打开连接时出现错误 用户 Domain ComputerName 登录失败 当我检查自定义操作的身份时 使用System Securit
  • CSS属性在github中以红色突出显示

    The touch actionSCSS 文件中的属性在 Github diff 中以红色突出显示 有什么理由吗 这是它的 DOM 如果存在语法错误 Github 会突出显示这样的代码 它不是 100 准确 而且它实际上并没有运行您的代码
  • Meteor-AutoForm:如何根据另一个控件更新选择选项

    我一直在寻找一些问题的答案 这些问题应该非常简单 但我一生都无法弄清楚 基本上我有一个带有两个选择控件的meteor autoform
  • 在 Windows 7 上找不到模块“连接”

    请看下面 C Program Files nodejs gt npm g install connect npm http GET https registry npmjs org connect npm http GET https re
  • React Native + React Native Paper 应用程序中未显示图标

    这是一个新鲜的React Native应用程序使用React Native Paper 我按照以下说明进行操作https callstack github io react native paper getting started html
  • 无法实现 grunt-connect-proxy

    为了 http 127 0 0 1 9000 我得到的路线 不能获取 对于 v1 路线我得到 未找到 在此服务器上找不到请求的 URL v1 这是我的 Gruntfile js Generated on 2013 10 08 using g