角9-NGCC 因未处理的异常而失败

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

编译@angle/animations: es2015 as esm2015编译 @ 棱角/动画: es2015 as esm2015编译@棱角/核心: 汇编@angle/core: es2015 as esm2015 编译@angle/core: es2015 as esm2015 Error : worker # 5上的错误: TypeError: 无法读取 null 的属性‘ fileName’

然后它抛出下面的错误:

编译@angle/core: es2015 as esm2015 角度/编译器/测试: es2015作为 esm2015编译 @ angle/core: es2015 as esm2015 错误 : 尝试使用 ngcc 返回来编写 node _ module/@angle/core/core.d.ts. _ _ ivy _ ngcc _ bak 但它已经存在,所以不写,也不备份, Node _ module/@angle/core/core.d.ts.

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

编译@angle/core: es2015作为 esm2015一个未处理的异常 发生: NGCC 失败。

188334 次浏览

在文件 Tsconfig.json中设置 “ ableleIvy”: 假可以修复这个错误,Ivy 应该已经可以使用了。

我在 Clement911对 < em > 错误的回答更新到版本9 # 36060 后中找到了这个,经过大量的测试,它对我很有用。

我也有过类似的问题。

在我的例子中,将 Node.js 更新到一个新版本会有所帮助。

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

值得注意的是,开发和生产的机器运转良好。

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

  1. 在文件 Tsconfig.json中,在 AngularCompilerOptions中已经设置(“ 使艾薇”: false)
  2. 将 Node.js 更新到最新版本(执行返回的 Node-v版本14.3.0)
  3. 已删除 Node _ module 文件夹文件夹文件夹: (执行 rm .\node_modules\(在 Windows 上) ,确保已成功删除)
  4. 已经安装了包(执行 npm i)
  5. 在这里,项目已经准备就绪,可以构建和运行了,没有任何错误。

使用 node -v检查 Node.js 版本,并检查 Angular 9是否与其兼容。

将 Node.js 更新到最新的 LTS 版本(12.8.1)对我来说很有用。 我使用 nvm (节点版本管理器)完成了这项工作。 我找到了很好的指示 给你

我通常建议人们在每次成功的部署之后(本地)对项目进行手动备份,因为当你面对这种问题(所有与 NGCC errors相关的东西)时,你可以只是硬删除 Node _ module文件夹并从 最后的后援中恢复它。然后再重建。

有时,当您无法负担将 Node.js 更新到 最后一个版本时,这种解决方案将是完美的。

尝试删除 Node _ module文件夹并再次运行 install:

rm -rf node_modules
npm install

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

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

  • 我从文件 包裹 Json中删除了 Tslib.js
  • 删除文件 包裹锁定 Json
  • 删除 Node _ module 文件夹文件夹
  • npm i
  • ng serve

这招对我很管用。

这个问题是因为您可能在任何端口上运行应用程序,并且 Angular ngcc 被分配了一个特定的进程 id,这个进程 id 被指定并锁定在一个名为 \node_modules\@angular\compiler-cli\ngcc内的 __ngcc_lock_file__

如果你正在做一个硬系统关闭或如果你的操作系统崩溃,这个锁文件将在 Node _ module 文件夹文件夹。一旦您打开您的机器并试图再次启动应用程序,Angular CLI 将检查这个锁文件并尝试找到文件中指定的进程 id。大多数时候,进程 id 将丢失,因为您完成了一个完整的机器重新启动,它将抛出此错误。

解决方案1 . 删除文件夹 Node _ module并执行 < em > npm 安装

解决方案2 . 智能解决方案-删除锁文件,如下所示。

转到 \node_modules\@angular\compiler-cli\ngcc,找到名为 __ngcc_lock_file__的文件,然后删除它。 成交。

使用终端/Cmd,

第一步:

ng update @angular/cli @angular/core

第二步:

ng update

第三步:

ng serve

它修好了我的。

注意

鞋带文件夹中的自定义 CSS 文件可能会被删除。在更新之前备份它们,并在更新之后将它们放回原位!

如果版本不匹配..。

首先检查 Node.js 和 Angular 的版本

然后写: Npm 安装 = > 校对: ng service

如果有端口问题: Ng 服务器——端口4201

在我的特殊情况下,在运行 Npm 审计修复程序之后,@ angle-devkit/build-angle在我的 包裹 Json文件中被更新为“ ^ 0.1001.2”。(这个版本似乎属于 Angular 10,而不是本地项目的 Angular 版本(v9.1.7))

恢复这一变化之后,一切又开始运转起来:

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

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

"angularCompilerOptions": {
"enableIvy": false
}

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

在我的示例中,我从 npm 安装了 角度-字体-可怕的软件包,然后安装了 鞋带。它可能会有冲突,但我只是删除了以前安装的棱角字体-真棒,然后做了一个 ng build

当我运行 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是一个成功的! 我们生活在快乐之后,直到我们遇到不同的问题

嗯,在我的情况下,我试图运行一个 Angular 项目的旧版本与新版本的 Node.js。我是这么做的:

删除了所有现有结核模块。

rm -rf node_modules

更新到最新的 Node.js:

npm update
npm install

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

ng update @angular/core

将项目 cli 更新为最新版本

ng update @angular/cli

现在开始计划

ng-serve

将文件 Tsconfig.json替换为以下 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
}
}

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

删除“ node _ module”和“ npm i”的解决方案不起作用,因为即使我有原始的 包裹 Json文件,“ npm i”仍然安装不同版本的库——而不是原始版本。目前还不清楚文件夹 Node _ module中的库究竟是什么。

唯一有帮助的解决方案是 从备份恢复 node _ module 文件夹

否则,如果您需要更新应用程序中的库 去度假,准备一些抗抑郁药,但是在升级库之后,它仍然可能无法在几天内帮助解决无意义的错误。

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

对于 Windows 用户:

npm i rimraf -g
rimraf node_modules
npm i

“更漂亮”: “2.2.1”。删除这个,因为它会干扰语义。

在我的例子中,添加 enableIvy: false并没有解决这个问题,这是通过 VisualStudio 代码的角语言服务扩展(看起来它实际上并没有考虑到参数)。

解决方案是降级扩展版本(v12.0.0—— > v11.2.14. 看这里就知道了)。

对我来说,原来我们用的是包裹锁。Json 声明了一段时间的软件包版本控制,当我由于合并冲突而试图删除它并重新创建它时,发生了错误。当我们回到那个旧的包裹锁的时候。Json 问题已经解决了。于是我开始寻找:

  • 比较两者之间的变化
  • 检查问题是否也出现在生产环境中——那么这几乎不可能是开发人员的依赖
  • 整理不可能和可能的依赖关系

我最后到了 Angular 依赖项,更确切地说是@angle/Materials-moment-Adapter,它已经收到了一个更新(正如我们在 package.json 中允许的那样) 从版本11.2.0到11.2.12。

对于较老的 Angular 版本,我设法通过 VisualStudio 扩展来修复这个问题。

角 CLI: 6.1.5
节点: 8.11.4

视觉工作室,角度扩展

角视引擎

扩展 语言服务(v12.0.2)→ < em > 扩展设置

  • 工作区下,检查“用户遗留视图引擎语言服务”。

尝试删除 棱角字体,太棒了并再次运行 install:

npm uninstall angular-font-awesome
ng add @fortawesome/angular-fontawesome@0.6.0

这个问题是解决后,我删除了字体,现在材质图标是我的图标选择。

但是我应该感谢你多年来提供的 Font Awesome 免费图标 :)

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

对于那些使用 Visual Studio Code 1.62或更高版本的用户,这些答案都没有帮助到我。

我昨天更新了 Visual Studio Code (2021-10-11) ,由于某种原因,我的 Angular 9项目开始显示“ NGCC 失败”。我把 Visual Studio 代码降级到1.61.2,一切恢复正常。

不幸的是,以前的答案都不管用。

降级 打印稿(我的情况是4.8至4.6)解决了这个问题。