【问题标题】:Cannot GET / page无法获取/页面
【发布时间】:2014-10-24 13:20:28
【问题描述】:

我正在尝试使用 grunt contrib connect 进行 Angular 应用程序的本地开发和测试。

gruntfile 配置如下:

connect: {
    server: {
        options: {
            open: true,
            keepalive: true, 
            hostname: 'localhost',
            port: 8080
        }
    }
}

任务

grunt.registerTask('serve', [
    'connect:server'
]);

grunt serve 用根目录的文件列表打开浏览器。单击dist 目录启动应用程序。直到这里一切都很好:可以从应用程序菜单更改页面,但是......直接访问或重新加载这些页面中的任何一个,都会给出Cannot GET /dist/page......有必要返回到 'localhost:8080/dist' 以使其工作再一次……

我能做些什么来完成这项工作?

【问题讨论】:

  • $locationProvider 是否设置为使用 HTML5 模式?看起来像$locationProvider.html5Mode(true);。如果是这样,当在应用程序中时,位置 URL 会随着路由的变化而被修改,但浏览器实际上并没有从服务器请求新的 URL。重新加载时,浏览器 正在 请求该 URL,而服务器没有与之匹配的资源。
  • 谢谢。是的html5Mode是true。我能做些什么让它发挥作用吗? (就像在远程服务器上)

标签: angularjs gruntjs grunt-contrib-connect


【解决方案1】:

我找到了解决方案here,使用 grunt connect-modrewrite

现在的任务是:

server: {
    options: {
        port: 9000,
        livereload: 35729,
        hostname: 'localhost',
        open: true,
        middleware: function (connect) {
            return [
                        modRewrite(['^[^\\.]*$ /index.html [L]']),
                        connect.static('dist')
                    ];
                }
            }
        }

【讨论】:

    【解决方案2】:

    我建议您添加 base 选项以将“dist”目录指定为 Connect 服务器的根目录:

    connect: {
        server: {
            options: {
                open: true,
                keepalive: true, 
                hostname: 'localhost',
                port: 8080,
                base: 'dist'
            }
        }
    }
    

    如果这不能解决您的问题,它至少会使路线不那么混乱。

    【讨论】:

      猜你喜欢
      • 2017-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 2021-10-14
      • 2014-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多