75

在将依赖项升级到 Angular 9(并执行必要的代码更改)后构建应用程序会引发错误:

编译@angular/animations:es2015 为esm2015 编译@angular/animations:es2015 为esm2015 编译@angular/core:es2015 为esm2015 编译@angular/core:es2015 为esm2015
编译@angular/core:es2015 为esm2015
错误:worker 错误#5:TypeError:无法读取 null 的属性“文件名”

然后它继续抛出以下错误:

编译 @angular/core : es2015 as esm2015 编译 @angular/compiler/testing : es2015 as esm2015 编译 @angular/core : es2015 as esm2015
错误: 试图用一个ngcc 备份文件,但它已经存在,因此不写入也不备份 node_modules/@angular/core/core.d.ts。

此错误可能是因为两个或多个入口点重叠,并且 ngcc 已被要求多次处理某些文件。
您应该检查此包中的其他入口点并设置一个配置以忽略您未使用的任何入口点。

编译 @angular/core : es2015 as esm2015 发生未处理的异常:NGCC 失败。

4

26 回答 26

78

我和我的同事开发人员在我们的本地主机机器上遇到了这个问题(NGCC 失败)。

重要的是要注意 dev 和 prod 机器运行良好。

为了解决这个问题,我们遵循了以下步骤:

  1. tsconfig.json中,在angularCompilerOptions中设置了 (" enableIvy ": false)
  2. 将nodeJS更新到最新版本:(执行node -v返回v14.3.0)
  3. 已删除node_modules文件夹:(执行"rm .\node_modules\" [on windows],确保已成功删除)
  4. 已安装软件包:(执行npm i
  5. 在这里,该项目已准备好构建。它现在可以毫无错误地构建和运行。

我希望这可以帮助您和其他人在这种情况下。

于 2020-05-26T11:25:07.033 回答
46

在我的特殊情况下,@angular-devkit/build-angular在运行npm audit fix后在我的 package.json中更新为“ ^0.1001.2 ” 。(这个版本好像属于angular 10,而不是本地项目的angular版本(v9.1.7))

恢复此更改后,一切都重新开始工作:

“@angular-devkit/build-angular”:“ ~0.901.6

于 2020-09-22T12:27:55.620 回答
23

使用终端/cmd,

第一步:

ng update @angular/cli @angular/core

第二步:

ng update

第三步:

ng serve

固定我的。

注意 bootstrap 文件夹中的自定义 css 文件可能会被删除。之前备份它们并在更新后将它们放回去!

于 2020-09-04T13:39:02.810 回答
15

这个问题是因为您可能在任何端口上运行您的应用程序,并且 angular ngcc 被分配了一个特定的进程 id,该进程 id 被指定并锁定在一个名为 __ngcc_lock_file__inside的文件中\node_modules\@angular\compiler-cli\ngcc。如果您正在执行硬系统关闭或操作系统崩溃,此锁定文件将在 node_modules 中。一旦您打开机器并尝试再次启动应用程序,angular cli 将检查此锁定文件并尝试查找文件中指定的进程 ID。大多数情况下,由于您重新启动了完整的机器,因此该进程 ID 会丢失,并且会引发此错误。

解决方案 1。删除node_modules并执行 npm install

解决方案 2。智能解决方案 - 删除锁定文件如下。

Go to `\node_modules\@angular\compiler-cli\ngcc`

找到名为__ngcc_lock_file__删除它的文件。完毕。

快乐的黑客

于 2020-08-09T11:37:31.343 回答
15

尝试删除该node_modules文件夹并再次运行安装:

rm -rf node_modules
npm install

对我来说它已经解决了这个问题。

于 2020-07-10T09:32:22.900 回答
7

就我而言,添加enableIvy: false并没有解决问题,这与 vsCode 的 Angular 语言服务扩展有关(看起来它实际上并没有考虑到参数)。

解决方案是降级扩展版本。(v12.0.0 --> v11.2.14看这里知道如何

于 2021-05-17T09:45:32.413 回答
7

添加"postinstall": "ngcc""scripts"package.json 帮助我解决了这个问题

于 2020-07-12T11:59:01.480 回答
4

在 tsconfig.json 中设置 "enableIvy": false 确实修复了该特定错误。常春藤不是应该已经可以使用了吗?

我在此处输入链接描述@clement911答案中找到了这个答案,经过大量测试后它对我有用

于 2020-04-30T08:38:08.947 回答
3

好吧,就我而言,我试图用新版本的节点运行旧版本的 Angular 项目。我这样做了:

删除所有现有的结节模块。

rm -rf node_modules

将节点 js 更新到最新

npm update
npm install

将 Angular 项目版本更新到最新版本

ng update @angular/core

将项目 cli 更新到最新

ng update @angular/cli

现在开始项目

ng-serve
于 2020-10-30T17:22:00.213 回答
3
  • 我从package.json中删除了 tslib.js
  • 删除了 package-lock.json
  • 删除了 node_modules 文件夹
  • npm i
  • ng serve

为我工作

于 2020-07-20T15:52:53.027 回答
3

使用 .检查您的 node.js 版本node -v。并检查 Angular 9 是否与它兼容。将 node.js 更新到最新的 LTS 版本(12.8.1)对我有用。我用 nvm(节点版本管理器)做到了这一点。在这里找到了一个很好的说明。

于 2020-06-24T07:11:45.347 回答
1

万一版本不匹配..检查第一个版本节点js和角度js

然后写:npm install =>:ng serve

如果有端口问题:ng server --port 4201

于 2020-09-22T11:28:00.007 回答
1

不存在禁用IVY是最佳解决方案的情况。

对于 Windows 用户:

npm i rimraf -g
rimraf node_modules
npm i
于 2021-03-16T13:41:39.543 回答
1

在这个聚会上有点晚了,但是对于旧的 Angular 版本,我设法通过 VS 扩展来解决这个问题。

角 CLI:6.1.5 节点:8.11.4

视觉工作室,角度扩展

角度视图引擎

扩展 -> Angular 语言服务(v12.0.2) -> 扩展设置

  • 在 Workspace 下,勾选“User Legacy View Engine language service”。
于 2021-05-27T11:33:55.683 回答
1

我得到了这个和其他错误,因为我试图更新 Angular 9 应用程序的一些边缘库。随后在编译过程中出现的错误是毫无意义的,因为它们无助于纠正错误。

删除“node_modules”和“npm i”的解决方案不起作用,因为即使我有原始的package.json,“npm i”仍然安装不同版本的库——而不是原始库。最初 node_modules 中的库到底是什么尚不清楚。

唯一有帮助的解决方案是从备份恢复 node_modules

否则,如果您需要更新应用程序中的库,请假并准备一些抗抑郁药,但在升级库后解决无意义的错误可能仍然无济于事。

于 2021-02-05T11:03:09.753 回答
1

我必须进入我的 tsconfig.spec.json 文件并添加

"angularCompilerOptions": {
    "enableIvy": false
}

它已经在我的 tsconfig.json 文件中。

于 2020-09-23T23:37:09.957 回答
1

尝试删除 angular-font-awesome 并再次运行安装:

npm 卸载 angular-font-awesome ng 添加@fortawesome/angular-fontawesome@0.6.0

在我删除 fontawesome 后问题就解决了,现在 Material Icons 是我的图标选择。但我应该感谢 Font Awesome 多年来提供的免费真棒图标 :)

于 2021-06-15T12:08:08.223 回答
0

适用于使用 vscode 1.62 或更高版本的用户。这些答案都没有帮助我。我昨天(2021 年 10 月 11 日)更新了 vscode,由于某种原因,我的 Angular 9 项目开始显示“NGCC 失败”。我将 vscode 降级到 1.61.2,一切恢复正常。

于 2021-11-11T17:30:38.100 回答
0

我在运行项目时遇到了这个问题,ionic build而我的同事与我的项目构建得很好。所以我们跑去ng -v比较我们的包裹。原来我有更高版本的@angular-devkit/build-angular@angular-devkit/build-optimizer@angular-devkit/build-webpack 它们每个都是 0.1001.2 版本——我们的项目运行的是 0.901.8。

所以我跑去npm uninstall @angular-devkit/build-angular 0.1001.2卸载它,然后npm install @angular-devkit/build-angular 0.901.8降级。再次运行ng -v时,另外两个也降级了。

终于,ionic build成功了!此后我们过着幸福的生活,直到遇到不同的问题。我们项目的工作包

于 2020-10-14T17:34:35.460 回答
0

对我来说,事实证明我们已经使用了 package-lock.json 声明的包版本控制一段时间,当我由于合并冲突而尝试删除它并重新创建它时,发生了错误。当回到旧的 package-lock.json 时,问题就消失了。于是我开始搜索:

  • 比较两者之间的变化
  • 检查生产中是否也出现问题 - 那么它几乎不可能是开发依赖
  • 整理出不太可能和可能的依赖关系

我最终得到了 Angular 依赖项,更准确地说是在 @angular/material-moment-adapter 收到了从版本 11.2.0 到 11.2.12 的更新(因为我们在 package.json 中允许它)。

于 2021-05-19T17:34:26.707 回答
0

就我而言,问题是我的服务器没有足够的 RAM (1 GB),这似乎不足以处理构建。增加到2 GB后,问题就解决了。

希望这可以帮助任何人。

于 2021-11-04T19:27:28.987 回答
0

"prettier": "2.2.1",删除它,因为它与语义相冲突。

于 2021-04-30T04:56:49.687 回答
0

我通常建议人们在每次成功部署(本地)后对项目进行手动备份,因为当您遇到此类问题(与 相关的所有内容NGCC errors)时,您可以硬删除node_modules文件夹并从您那里恢复它last backup。然后再次构建。

有时,当您负担不起更新nodeJS最新版本时,此解决方案将是完美的。

于 2020-06-26T13:22:32.440 回答
0

我有类似的问题,

在我的情况下,将 NodeJS 更新到新版本有帮助。

于 2020-05-26T07:28:09.477 回答
0

在我的情况下,我从 npm 安装了 angular-font-awesome 包然后引导,它可能会发生冲突,我只是删除以前安装的 angular-font-awesome 然后完成 ng build

于 2020-09-28T18:53:41.603 回答
-3

用下面的 json 内容替换 tsconfig.json

{
  "compileOnSave": false,
  
  "compilerOptions": {
     "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "esnext",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "target": "es2015",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  },
  "angularCompilerOptions": {
    "fullTemplateTypeCheck": true,
    "strictInjectionParameters": true
  }
}
于 2021-01-05T15:23:49.050 回答