【问题标题】:Angular ng serve does not include polyfills -- IE11/Edge only working when running ng build --prodAngular ng serve 不包括 polyfill——IE11/Edge 仅在运行 ng build --prod 时工作
【发布时间】:2018-10-01 15:35:09
【问题描述】:

我已经尝试过为此使用 npm run start 和 ng serve 。在所有情况下,生成的应用程序都无法在 IE11 和 Edge 中运行。

IE11 和 Edge 还存在许多其他问题,但这完全是关于 Angular CLI 在运行 ng serve 时无法有效包含 polyfill 的问题。

    ng serve

** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **

Date: 2018-10-01T15:27:24.006Z
Hash: f7ee38fccff1d585e3ed
Time: 12681ms
chunk {main} main.js, main.js.map (main) 119 kB [initial] [rendered]
chunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 452 kB [initial] [rendered]
chunk {runtime} runtime.js, runtime.js.map (runtime) 5.22 kB [entry] [rendered]
chunk {styles} styles.js, styles.js.map (styles) 86.4 kB [initial] [rendered]
chunk {vendor} vendor.js, vendor.js.map (vendor) 7.2 MB [initial] [rendered]
i 「wdm」: Compiled successfully.

这是绝对必要的,因为我需要让我的应用程序完全兼容 IE11/Edge,而且我无法为生产环境构建以检查 div 居中是否有效。

编辑1:

运行 ng serve --prod 似乎确实有效,但是修改某些东西时速度很慢。仍然希望找到解决此问题的方法。

【问题讨论】:

  • 你启用了所有的 IE11 polyfills 吗? (见angular.io/guide/browser-support#polyfill-libs)。另外,您的 tsconfig.json 目标是否设置为“es5”?
  • @Jolleyboy 如帖子中所述——是的,它们在使用 ng build --prod 和 ng serve --prod 时都可以工作——只有在运行 ng serve 时它才不起作用仍然很关键。

标签: angular angular-cli polyfills


【解决方案1】:

这对你来说可能有点晚了,但万一其他人发现它......我有一个类似的问题,我用 CLI 从头开始​​制作的 Angular 7 应用程序在任何地方都可以工作,除了微软的 EDGE 浏览器从 ng serve 运行时. (是的,IE 11 工作,但 EDGE 没有。去看看。)

无论如何,我找到了这篇文章: https://github.com/angular/angular-cli/issues/8596

用户 clydin 的评论为我提供了解决方案(即使他们在谈论 Safari)。他们说:

错误是由于开发服务器的实时重载客户端代码 (来自 webpack-dev-server)需要基本的 ES2015 支持。这 不会影响应用程序的构建(生产或其他),因为 不存在实时重新加载代码。实时重新加载功能可以 如果需要,通过 --no-live-reload 选项禁用。由于有缺陷 在 safari 10 中,在 ng serve(默认)结果上启用源映射 在类似的错误中。这不会影响 Safari 11。

我在我的 package.json 中创建了一个脚本,当我运行这个脚本时,EDGE 工作了。你可能也有这个标志的运气。

"app-edge": "ng serve --host 0.0.0.0 --disable-host-check --no-live-reload"

【讨论】:

  • 嗨,克里斯,我测试它为时已晚,但不会实时重新加载,只是生成相同的结果?
  • @MichaelB 我的理解是 --no-live-reload 会关闭浏览器中的某些功能,这些功能会在尝试“ng 服务”应用程序时导致错误。它与代码的构建方式无关,而与浏览器如何加载它无关。它对我有用,所以我没有深入挖掘。
猜你喜欢
  • 2018-02-07
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
  • 2019-09-13
  • 2019-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多