5

背景故事:昨天我需要将我的应用程序从 Angular 5.2.9 更新到 6,所以我想“为什么不在我这样做的时候去 7。” 所以当然这花了一整天的时间,并且需要对很多文件进行大量更改(主要是因为 Rxjs),但无论如何,到一天结束时,我能够做到ng serve并且没有错误地编译它!

但是当我去localhost:4200运行该应用程序时,它在“正在加载...”时停止,并在 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”代码,所以我没有错过类似的东西。我觉得我已经非常接近进行此更新工作了,但是当然,如​​果该应用程序无法运行,那就不好了!谷歌搜索此错误消息并没有发现任何有用的信息(无论如何对我来说)。

4

2 回答 2

6

将 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.


/**********************************************************************
于 2018-11-15T19:25:49.120 回答
0

我的应用程序也发生了同样的事情,但是在不同的上下文中,我在 django 应用程序中添加了角度构建文件,包含的脚本标签的顺序不合适,所以在运行“python manage.py runserver”时,浏览器抛出了一个类似“在此配置中 Angular 需要 Zone.js”的错误。所以在尝试以下修复后它得到了修复:

首先顺序应该是

  • 运行时.js
  • polyfills.js
  • main.js

由于 Angular 生成 es5 和 es2015 构建文件,es5 构建文件的脚本标签必须包含“nomodule defer”作为属性,而 es2015 包含“type="text/javascript"”。下面的屏幕截图来自我的 Django 应用程序的“index.html”,我在其中添加了角度构建文件。在此处输入图像描述

于 2021-05-01T11:32:45.280 回答