Angular 7:ng serve 工作,但控制台显示 Zone.js 错误并且应用程序无法加载
Angular 7: ng serve works, but console shows a Zone.js error and app won't load
背景故事: 我昨天需要将我的应用程序从 Angular 5.2.9 更新到 6,所以我想 "why not go to 7 while I'm doing this." 所以当然花了一整天,并且需要对大量文件进行大量更改(主要是因为 Rxjs),但无论如何,到一天结束时,我能够做到 ng serve
并且编译没有错误!
但是当我转到 localhost:4200
到 运行 应用程序时,它在 "Loading..." 停止,并在 DevTools 控制台中显示以下消息:
core.js:14016 Uncaught (in promise) Error: In this configuration Angular requires Zone.js
at new NgZone (core.js:14016)
at getNgZone (core.js:14701)
at PlatformRef.push../node_modules/@angular/core/fesm5/core.js.PlatformRef.bootstrapModuleFactory (core.js:14599)
at core.js:14643
我已尝试确保我的所有软件包都是最新的。 npm install
给出了一些关于 fsevents 的错误,但是 zone
是最新的。
所以我现在不知所措。我不知道错误消息真正想告诉我什么,或者它是否合法。我做了 ng new
并检查了生成的文件,那里没有 "zone.js setup" 代码,所以我没有错过类似的东西。我觉得我已经非常接近让这个更新工作了,但当然,如果应用程序不会 运行,那就不好了!
谷歌搜索此错误消息并没有找到任何有用的信息(无论如何对我来说)。
将 package.json 中的每个依赖项更新为最新的
npm i -g npm-check-updates
ncu -u
npm install
即使您收到此错误,错误也会消失。转到 polyfill.ts
并添加或取消注释:-
/****************************************************************************
* Zone JS is required by default for Angular itself. */
import 'zone.js/dist/zone'; // Included with Angular CLI.
/**********************************************************************
我的应用程序也发生了同样的事情,但在不同的上下文中,我在 django 应用程序中添加了 angular 构建文件,包含的脚本标签顺序不正确,所以虽然 运行 'python manage.py runserver',浏览器抛出类似“在此配置中 Angular 需要 Zone.js” 的错误。所以在尝试以下修复后它得到了修复:
首先顺序应该是
- runtime.js
- polyfills.js
- main.js
因为 angular 生成 es5 和 es2015 构建文件,es5 构建文件的脚本标签必须包含 'nomodule defer' 作为属性,而 es2015 包含 'type="text/javascript"' .下面的屏幕截图来自我的 Django 应用程序的 'index.html',我在其中添加了 angular 构建文件。
背景故事: 我昨天需要将我的应用程序从 Angular 5.2.9 更新到 6,所以我想 "why not go to 7 while I'm doing this." 所以当然花了一整天,并且需要对大量文件进行大量更改(主要是因为 Rxjs),但无论如何,到一天结束时,我能够做到 ng serve
并且编译没有错误!
但是当我转到 localhost:4200
到 运行 应用程序时,它在 "Loading..." 停止,并在 DevTools 控制台中显示以下消息:
core.js:14016 Uncaught (in promise) Error: In this configuration Angular requires Zone.js
at new NgZone (core.js:14016)
at getNgZone (core.js:14701)
at PlatformRef.push../node_modules/@angular/core/fesm5/core.js.PlatformRef.bootstrapModuleFactory (core.js:14599)
at core.js:14643
我已尝试确保我的所有软件包都是最新的。 npm install
给出了一些关于 fsevents 的错误,但是 zone
是最新的。
所以我现在不知所措。我不知道错误消息真正想告诉我什么,或者它是否合法。我做了 ng new
并检查了生成的文件,那里没有 "zone.js setup" 代码,所以我没有错过类似的东西。我觉得我已经非常接近让这个更新工作了,但当然,如果应用程序不会 运行,那就不好了!
谷歌搜索此错误消息并没有找到任何有用的信息(无论如何对我来说)。
将 package.json 中的每个依赖项更新为最新的
npm i -g npm-check-updates
ncu -u
npm install
即使您收到此错误,错误也会消失。转到 polyfill.ts
并添加或取消注释:-
/****************************************************************************
* Zone JS is required by default for Angular itself. */
import 'zone.js/dist/zone'; // Included with Angular CLI.
/**********************************************************************
我的应用程序也发生了同样的事情,但在不同的上下文中,我在 django 应用程序中添加了 angular 构建文件,包含的脚本标签顺序不正确,所以虽然 运行 'python manage.py runserver',浏览器抛出类似“在此配置中 Angular 需要 Zone.js” 的错误。所以在尝试以下修复后它得到了修复:
首先顺序应该是
- runtime.js
- polyfills.js
- main.js
因为 angular 生成 es5 和 es2015 构建文件,es5 构建文件的脚本标签必须包含 'nomodule defer' 作为属性,而 es2015 包含 'type="text/javascript"' .下面的屏幕截图来自我的 Django 应用程序的 'index.html',我在其中添加了 angular 构建文件。