Angular ng serve 产生错误: NGCC 失败

12

在运行ng serve后,我在终端窗口中遇到了一个异常:

编译 @angular/core : 将模块编译为 esm5

Error: Error on worker #1: TypeError: Cannot read property 'map' of undefined

并且以下是信息:

An unhandled exception occurred: NGCC failed.

请查看/tmp/ng-EAdxWj/angular-errors.log获取更多详细信息。

angular-errors.log:

[error] Error: NGCC failed.
    at NgccProcessor.process (/IdeaProjects/app/frontend/node_modules/@ngtools/webpack/src/ngcc_processor.js:76:19)
    at /IdeaProjects/app/frontend/node_modules/@ngtools/webpack/src/angular_compiler_plugin.js:579:31
    at SyncHook.eval [as call] (eval at create (/IdeaProjects/app/frontend/node_modules/tapable/lib/HookCodeFactory.js:19:10), <anonymous>:7:1)
    at SyncHook.lazyCompileHook (/IdeaProjects/app/frontend/node_modules/tapable/lib/Hook.js:154:20)
    at Object.webpack [as webpackFactory] (/IdeaProjects/app/frontend/node_modules/webpack/lib/webpack.js:55:30)
    at createWebpack (/IdeaProjects/app/frontend/node_modules/@angular-devkit/build-webpack/src/webpack-dev-server/index.js:20:36)
    at Object.runWebpackDevServer (/IdeaProjects/app/frontend/node_modules/@angular-devkit/build-webpack/src/webpack-dev-server/index.js:46:12)
    at SwitchMapSubscriber.project (/IdeaProjects/app/frontend/node_modules/@angular-devkit/build-angular/src/dev-server/index.js:191:32)
    at SwitchMapSubscriber._next (/IdeaProjects/app/frontend/node_modules/@angular-devkit/build-angular/node_modules/rxjs/internal/operators/switchMap.js:49:27)
    at SwitchMapSubscriber.Subscriber.next (/IdeaProjects/app/frontend/node_modules/@angular-devkit/build-angular/node_modules/rxjs/internal/Subscriber.js:66:18)
    at /IdeaProjects/app/frontend/node_modules/@angular-devkit/build-angular/node_modules/rxjs/internal/util/subscribeToPromise.js:7:24
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

你的代码有没有错误? - M A Salman
没有任何错误了。首先,我有NPM和NodeJs版本冲突的问题。 - Serhii
有人解决了如何摆脱它吗?我遇到了同样的问题。 - David Silwal
你的一个依赖项可能导致了这个问题,你更新了 package.json 吗? - YaakovHatam
对我来说,问题出在 @angular/flex-layout 上,当我移除了这个依赖后,我的应用程序就能够构建了。我会进一步排查,但这就是导致问题的依赖关系。 - Derek J.
5个回答

22
我刚遇到了同样的问题,并通过将以下内容添加到tsconfig.app.json文件中解决了它。
"angularCompilerOptions": {
    "enableIvy": false
},

4
为什么这个应用程序能在我的同事的电脑上完美运行,但在我的电脑上却无法运行?虽然这种解决方法可以解决问题,但并不是最理想的解决方案。 - Javi Marzán
这个错误是在我安装了flex-layout模块后开始出现的,即使我删除了有问题的模块,它仍然存在。这个解决方法修复了问题,但像你一样,我也想知道发生了什么。 - VictorEspina
5
@Felix,这意味着你会禁用Ivy编译器并使用旧编译器(AOT)。你确定这是正确的解决方案吗? - Niko
3
我正在使用Angular 11,只有tsconfig.json,没有tsconfig.app.json。而且只有compilerOptions,没有angularCompilerOptions。尽管如此,我仍然添加了enableIvy is not a valid option.并得到了这个错误信息。 - Jeb50
1
禁用 ivy 是一种解决方案吗? - Abdulrahman Hashem
1
@AbdulrahmanHashem,实际上在14中已经没有这个选项了。 - Victor Zakharov

6
在我的情况下,在运行npm audit fix后,@angular-devkit/build-angular在我的package.json中更新为"^0.1002.0"。(该版本似乎属于Angular 10,而不是本地项目的Angular版本(v9.1.3))
恢复更改后,一切都开始正常工作:
"@angular-devkit/build-angular":"~0.901.12"

ng update 到 v9 成功升级了从 v8,除了这个包,它是 ~0.1100.2 而不是 9。手动设置版本解决了我的问题。 - nelson6e65

6

我遇到了以下错误:

Unknown arguments: use-program-dependencies, useProgramDependencies
An unhandled exception occurred: NGCC failed.
See "C:\...\angular-errors.log" for further details.

我刚刚更新了Angular CLI、Material和Core以及其他模块,然后更新了我的项目所需的npm和TypeScript包,就这样。

ng update @angular/cli @angular/core
npm update @angular/material @angular/cdk
npm install -g typescript@latest

0

我在本地和远程服务器上都有相同的Linux设置。在本地它可以工作,但在远程服务器上出现了“NGCC失败”的错误信息,这并没有提供太多信息。

于是我开始重新安装所有东西:nodejs、npm、ng。我尝试清除缓存,但什么也没用。

然后在某个时候,我遇到了:

spawn后抛出ENOMEM错误

这让我想到了Node.js catch ENOMEM error thrown after spawn

事实上,我的主机只有1GB的RAM,而且没有交换空间。所以我添加了交换空间,神奇的是ngcc开始工作了。

现在我想知道是交换空间解决了问题还是我在远程服务器上重新安装所有东西的努力。


0
我在Angular 11上遇到了这个问题。
任何高于4.1版本的TypeScript都会导致失败。
4.8+版本会出现NGCC错误。
package.json中设置TypeScript版本如下:
"typescript": "~4.1.6"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接