症状
将我的 Angular2 应用程序升级到 Angular^4.1.2
并将 Angular CLI 测试版升级到^1.0.3
后,在使用ng serve
运行应用程序时,我的 *.bundle.js 文件找不到 404。请注意,此症状在 Angular2 和 Angular CLI beta 中没有出现。
设置
仅当我在index.html
中将 html5 基本网址设置为自定义网址时,此问题才存在,例如<base href="/some-path/">
.(即,如果我将其设置为<base href="/">
,则找到*.bundle.js
文件并且我的应用程序可以正常工作)
调查
在所述情况下会出现此症状,因为无论 html5 基本 url 是什么,文件都由角度 cli 在根级别提供。所以真正的问题是:我如何告诉 Angular CLI 在指定的基本 url 上提供 *.bundle.js 文件,或者告诉 angular 在根目录上选取文件?我发现了一个问题请求,似乎完全可以解决这个问题。因此,有一个选项--base-href
用于ng serve
和ng build
命令。
我尝试将这些选项单独使用,也可以组合使用:
ng serve --base-href /assessment/
ng serve --base-href /assessment/ --deploy-url /assessment/
但是,症状仍然存在。
我遇到了同样的问题,并在StackOverflow和Github上寻找了一段时间,我找到了适合我的解决方案。
试试这个:$ng serve --base-href '/assessment/' --deploy-url '/'
它适用于我的项目。
这对我有用:
不要- 在
index.html
上添加自定义路由,不要在/
上本地开发 - 使用
ng build --base-href /assessment/
构建 Angular 应用。这将在 dist 文件中创建路由,从而在 prod 中工作。