【问题标题】:How can I run angular compiled page without server如何在没有服务器的情况下运行角度编译页面
【发布时间】: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 文件分发给用户。他们是什么类型的用户;最终用户、质量保证、同事?将网站部署在某个轻量级服务器上并给他们一个链接不是更好吗?

标签: angular cors


【解决方案1】:

我从来没有尝试过做这件事(因为我从来没有需要)但一个想法可能是使用 Electron 将您的应用程序转换为桌面应用程序。有一些像 Hyper(似乎也是 VS Code)这样的软件,它们实际上是 Javascript/html/css 软件,但它们被设计为在桌面上运行,而不是在网络浏览器上运行。

参考:https://www.electronjs.org/

我认为你的需要就是这样。

【讨论】:

  • 我在移动应用上使用过 Cordova,但在桌面上没有尝试过。现在我看了看。这不能回答问题,但很有用,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 2016-06-22
  • 2020-07-28
  • 2016-12-03
  • 2021-03-12
  • 2018-10-05
相关资源
最近更新 更多