angularjs 2:SecurityError:无法执行

时间:2017-01-31 05:45:45

标签: angular

我尝试将angularjs 2 app dist文件作为简单的html页面运行。即我只需双击dist文件夹中的index.html。但该应用程序无法正常工作:错误:

  

EXCEPTION:未捕获(在承诺中):SecurityError:无法执行   ' replaceState' on' History':带URL的历史状态对象   '文件:/// d:/'无法在原始文档中创建' null'和   网址' file:/// D:/dev/ProxyVoting/ngapp/dist/index.html'。

6 个答案:

答案 0 :(得分:2)

第一步:

运行命令

ng build

ng build -prod (then it will compact all files for production version)

第二步:

在dist目录中的index.html处进行更改

<base href="/"> to <base href="./">

第三步:

将所有文件放入服务器(可能是localhost中的htdoc或任何服务器)

希望它会奏效。

答案 1 :(得分:1)

使用 HTTP服务器而非直接文件访问 。我遇到了同样的问题;所以,我使用过XAMPP&amp;让它发挥作用。

所以,您的 data: options.map(function(option) { return [ option ]; }) 会包含index.html这样的内容 - base href

答案 2 :(得分:1)

使用HTTP协议代替文件传输协议。对于http服务器中的那个开放构建。我正在使用节点服务器

npm install http-server -g

cd path/folder

http-server

答案 3 :(得分:0)

为什么不这样呢?

history.replaceState = (data:any, title:string, url?:string) => {;//nothing};

答案 4 :(得分:0)

我遇到了同样的问题,并使其在具有多个嵌套路线的相当复杂的angular 2应用中完全正常工作。

我所需要的只是

路由器配置 CommonModule,RouterModule.forRoot(routes,{useHash:true})

当然您需要先导入CommonModule import { CommonModule } from '@angular/common';

,并在index.html文件中 从html中删除了基本Href =“ /”标签,并像这样添加了它。 <script>document.write('<base href="' + document.location + '" />');</script>

答案 5 :(得分:0)

在实际的Web服务器上运行dist文件夹解决了我的问题。