【发布时间】:2020-05-14 17:45:37
【问题描述】:
我使用的是 Angular 6。我正在使用这个 cli 命令构建我的项目:
ng build --prod --base-href=
然后,我直接打开dist/index.html,没有服务器,在那些快乐的日子里,我可以通过这种方式离线使用我的项目。
最近我将 angular 更新为 8。现在,我使用相同的命令进行构建。但是,现在我收到 CORS 错误:
在以下位置访问脚本 'file:///D:/...../polyfills-es2015.707fe33a73ba6b994c2b.js' 来自 来源“空”已被 CORS 政策阻止:跨来源请求 仅支持协议方案:http、data、chrome、 chrome 扩展,https。
发生了什么变化?我怎样才能像以前一样离线使用我的项目?
编辑:
现在我可以回答了
“发生了什么变化?”
之前,在index.html 中,type 的脚本是"text/javascript"。但现在我看到了"module"。
之前:
<script type="text/javascript" src="main.90ef8874f90877154126.bundle.js">
现在:
<script src="main-es2015.057f1c108bdef8198685.js" type="module">
当我将模块转换为 text/javascript 时,它可以工作。
但现在我不知道type="module" 是做什么用的,为什么 angular 或 cli 开始放置“模块”,为什么 Chrome 不允许它,以及如何强制 angular 不放置“模块”但是只是“文本/javascript”。
【问题讨论】:
-
您有什么理由不使用 ng serve 吗?我看不出你为什么不使用它的原因,因为它启动了一个非常基本的本地服务器,这意味着它处于脱机状态,并且允许你使用 http 协议,而不是文件,这有很大不同。
-
原因很简单。我将其分发给用户。他们不一定有“ng serve”。他们只是离线使用该应用程序。没有更多的故事了。
-
有点困惑为什么要将 html 页面及其 javascript 文件分发给用户。他们是什么类型的用户;最终用户、质量保证、同事?将网站部署在某个轻量级服务器上并给他们一个链接不是更好吗?