【发布时间】:2018-08-28 03:16:39
【问题描述】:
我在 Angular v5 中有一个简单的 Web 应用程序。这是一个纯粹的客户端应用程序,它不使用任何服务器端(这是一个基本的计算器应用程序,它从 JSON 文件加载具有一些测量值的数据,并根据该 JSON 向用户显示一些分析)。
在开发过程中,我通过运行 -ng serve 命令,使用 Angular-cli “serve” 测试了应用程序,它运行良好。
现在我不会捆绑我的应用程序并开始使用它。我想在没有任何服务器的情况下在我的机器上本地运行这个应用程序。
根据Angular documentation,要将应用程序捆绑到部署,我应该运行命令:ng build --prod --base-href=./。在那里标记--prod 将部署应用程序的minified 和uglified 版本。 --base-href=./ 将在 index.html 中设置 <base href="./"> 以允许我直接从本地机器加载应用程序文件(所有 ABC.bundles.js 文件)。
现在,当我打开 dist/index.html 文件时,我可以看到所有脚本都已加载,但是控制台中出现错误:
ERROR 错误:未捕获(承诺中):SecurityError:执行失败 'History' 上的 'replaceState':带有 URL 的历史状态对象 'file:///C:/.../dist/' 不能在具有来源的文档中创建 'null' 和 URL 'file:///C:/.../dist/index.html'。
如何在没有服务器的情况下部署/捆绑我的应用程序以在本地运行?
【问题讨论】:
-
@David,这是一个完全不同的问题。两个问题在控制台报错一样,但是场景和问题完全不同
-
不一样,是浏览器的限制,不能对本地文件使用history API
-
是的。即使您不直接使用 History API,Angular 也处于幕后。
-
但它与 Angular 部署有什么关系?
-
重点是,不是。如果您想使用历史 API,无论是否有角度,您都需要一个网络服务器。或尝试我发布的链接中建议的解决方法
标签: angular deployment angular-cli