我尝试将angularjs 2 app dist文件作为简单的html页面运行。即我只需双击dist文件夹中的index.html。但该应用程序无法正常工作:错误:
EXCEPTION:未捕获(在承诺中):SecurityError:无法执行 ' replaceState' on' History':带URL的历史状态对象 '文件:/// d:/'无法在原始文档中创建' null'和 网址' file:/// D:/dev/ProxyVoting/ngapp/dist/index.html'。
答案 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
文件夹解决了我的问题。