【问题标题】:Grunt connect server returns cannot GET /route with backboneGrunt 连接服务器返回无法使用主干获取 / 路由
【发布时间】:2014-02-06 04:22:34
【问题描述】:

我有一个在 localhost 上运行的连接服务器,在我的骨干应用程序中,如果我重新加载路由,比如 localhost:8000/fun,服务器显然会返回 Cannot GET /fun,因为 /fun 不存在。

服务器需要知道以某种方式提供 index.html/fun 或其他东西。我实际上尝试过,但我得到了一些其他错误。有没有人处理过这个问题?

TL;DR 无法获取 /fun

【问题讨论】:

    标签: javascript backbone.js gruntjs grunt-contrib-connect


    【解决方案1】:

    So the basic solution was found here.

    你想要 modRewrite:

    npm install connect-modrewrite --save-dev
    

    在你的 Gruntfile 中:

    modRewrite = require('connect-modrewrite')
    

    咖啡:

    connect:
      server:
        options:
          port: 8765
          open: true
          base: ['./']
          middleware: (connect, options) ->
            middlewares = []
    
            middlewares.push(modRewrite(['^[^\\.]*$ /index.html [L]']))
            options.base.forEach( (base) ->
              middlewares.push(connect.static(base))
            )
            middlewares
    

    原版JS:

    connect: {
      server: {
        options: {
          port: 8765,
          open: true,
          base: ['./'],
          middleware: function(connect, options) {
            var middlewares;
            middlewares = [];
            middlewares.push(modRewrite(['^[^\\.]*$ /index.html [L]']));
            options.base.forEach(function(base) {
              return middlewares.push(connect["static"](base));
            });
            return middlewares;
          }
        }
      }
    }
    

    【讨论】:

      【解决方案2】:

      已接受的答案不再起作用 (2015-10-20),因为连接项目结构发生了变化,并且 connect.static 已移至其自己的包“serve-static”。因此,您必须通过以下方式调整此答案:

      npm install serve-static --save-dev
      

      在你的 Gruntfile.js 中需要它

      var serveStatic = require('serve-static');
      

      然后将中间件代码改成如下:

      middleware: function(connect, options) {
            var middlewares;
            middlewares = [];
            middlewares.push( modRewrite( ['^[^\\.]*$ /index.html [L]'] ) );
            options.base.forEach( function( base ) {
              return middlewares.push( serveStatic( base ) );
            });
            return middlewares;
          }
      

      否则效果很好!帮了我很多!

      【讨论】:

        猜你喜欢
        • 2012-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多