ng build无法在'History'上执行'replaceState':无法在原始'null'和URL的文档中创建具有URL的历史状态对象

时间:2018-01-23 10:00:39

标签: angular angular-router ng-build

我使用的是谷歌Chrome版本52,我希望能够通过访问index.html在没有服务器的情况下在本地运行我的应用程序。

我可以点击我的应用程序的登录页面。但是,当我尝试导航到另一个页面或单击任何按钮时,它无法工作。

我尝试了很多方法,例如:

  • 在导入reference onereference two
  • 之前添加脚本
  • 将基础href从/更改为./
  • 更改路由器配置以使用哈希并将基本href更改为 <script>document.write('<base href="' + document.location + '" />');</script>
  • 使用ng build --prod --allow-file-access-from-files

这是我遇到的确切错误: enter image description here

我已经尝试了一天,如果有人可以提供帮助,我将非常感激。

我不想运行网络服务器,我必须让它在Chrome上运行。

编辑: 适用于Safari

不适用于Chrome,Firefox,Opera,IE,Microsoft Edge

谢谢!

2 个答案:

答案 0 :(得分:0)

有几个原因,可能会导致路由器出现问题。如果您在生产环境中遇到问题,则应确保遵循以下步骤:

第1步:

在index.html的标题部分添加基本标记:

<base href="/">

第2步:

在根目录中创建.htaccess文件,并在index.html上设置ErrorDocument,如下例所示。

RewriteEngine On

ErrorDocument 404 /

这可以解决您的问题。

说明:

加载页面时,e。 G。 domain.com/settings,您的浏览器会向服务器发送请求,并期待一个settings.html文件作为响应。

如果ErrorDocument指向index.html文件,Angular路由器可以正确处理请求,并将您重定向到domain.com/settings而不会出现错误。

答案 1 :(得分:0)

结束我使用Web Server for Chrome来托管一个简单的本地服务器,这不是我想要的,但它总比没有好。

仍然希望有人能解决这个问题。

谢谢!