将依赖关系升级到Angular 9(并执行了必要的代码更改)后再构建应用程序会引发错误:
编译@ angular / animations:es2015 as esm2015编译 @ angular / animations:es2015作为esm2015编译@ angular / core: es2015 as esm2015编译@ angular / core:es2015 as esm2015
编译@ angular / core:将es2015作为esm2015
错误:工作人员5上的错误:TypeError:无法读取null属性'fileName'
然后继续抛出以下错误:
编译@ angular / core:es2015 as esm2015编译 @ angular / compiler / testing:es2015作为esm2015编译 @ angular / core:es2015作为esm2015
错误:尝试使用ngcc回写node_modules/@angular/core/core.d.ts.__ivy_ngcc_bak 文件,但它已经存在,因此无法写入或备份, node_modules/@angular/core/core.d.ts。
此错误可能是因为两个或多个入口点重叠,并且ngcc被要求多次处理某些文件。
您应该检查此程序包中的其他入口点,并设置配置以忽略不使用的任何入口点。
编译@ angular / core:es2015 as esm2015未处理的异常 发生:NGCC失败。
答案 0 :(得分:35)
我和我的同事开发人员在本地计算机上遇到此问题(NGCC失败)。
重要的是要指出开发和生产机器运行良好。
为了解决此问题,我们执行了以下步骤:
希望这样对您和其他人有帮助。
答案 1 :(得分:21)
在我的特殊情况下,运行后,我的package.json中的 @ angular-devkit / build-angular 已更新为“ ^ 0.1001.2 ” npm审核修复程序。 (此版本似乎属于Angular 10,而不是本地项目的Angular版本(v9.1.7))
还原此更改后,一切又重新开始起作用:
“ @ angular-devkit / build-angular”:“ 〜0.901.6 ”
答案 2 :(得分:15)
使用终端/ cmd,
第一步: ng更新@ angular / cli @ angular / core
第二步: ng更新
第3步: ng投放
修复我的问题。
注意 您在引导文件夹中的自定义css文件可能会被删除。在更新之前先备份它们,然后将它们放回去!
答案 3 :(得分:9)
尝试删除node_modules
文件夹,然后再次运行安装:
rm -rf node_modules
npm install
对我来说,它已经解决了问题。
答案 4 :(得分:5)
在我的例子中,添加 enableIvy: false
并没有解决问题,这与 vsCode 的 Angular 语言服务扩展有关(看起来它实际上没有考虑参数)。
解决方案是降级扩展版本。 (v12.0.0 --> v11.2.14 see here to know how)
答案 5 :(得分:4)
此问题是因为您可能在任何端口上运行您的应用,并且为ngcc分配了特定的进程ID,该进程ID已指定并锁定在名为
__ngcc_lock_file__
中的\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__
的文件,将其删除。
完成。
骇客入侵
答案 6 :(得分:3)
使用node -v
检查您的node.js版本。并检查Angular 9是否与它兼容。
将node.js更新到最新的LTS版本(12.8.1)为我工作。
我是用nvm(节点版本管理器)完成的。
找到了一个很好的说明here。
答案 7 :(得分:3)
在package.json中将"postinstall": "ngcc"
添加到"scripts"
中有助于解决此问题
答案 8 :(得分:2)
在我的情况下,我试图运行带有较新版本的node的旧版本的Angular项目。我是这样做的:
删除所有现有的结节模块。
rm -rf node_modules
将节点js更新为最新
npm update
npm install
将角度项目版本更新为最新版本
ng update @angular/core
将项目cli更新到最新版本
ng update @angular/cli
现在开始项目
ng-serve
答案 9 :(得分:2)
设置“ enableIvy”:tsconfig.json中的false确实可以修复该特定错误。 常春藤不应该已经可以使用了吗?
这个答案是我在enter link description here @ clement911答案中找到的,经过大量测试,它对我有用
答案 10 :(得分:1)
这次聚会有点晚了,但对于较旧的 Angular 版本,我设法通过 VS 扩展解决了这个问题。
Angular CLI:6.1.5 节点:8.11.4
Visual studio, angular extension
扩展 -> Angular 语言服务(v12.0.2) -> 扩展设置
答案 11 :(得分:1)
以防版本不匹配。 检查第一个版本的节点js和angular js
然后写: npm install => :ng服务
如果有端口问题: ng服务器-端口4201
答案 12 :(得分:0)
不存在禁用 IVY 是最佳解决方案的情况。
对于 Windows 用户:
npm i rimraf -g
rimraf node_modules
npm i
答案 13 :(得分:0)
我必须进入tsconfig.spec.json文件并添加
import numpy as np
import time
x = np.random.random((1, 1000))
y = np.random.random((10000, 1000))
y[53] = x
t = time.time()
x_in_y = np.equal(x, y).all(axis=1) # equal(x, y) returns a row x col matrix of True for matches; all(axis=0) returns a vector len(rows) if the entire row in x == y is true
idx = np.where(x_in_y) # returns the indicies where x_in_y is true (here 53)
print(time.time() - t) # 0.019975900650024414
t = time.time()
res = np.mean(x == y, axis=1) == 1
print(time.time() - t) # 0.03999614715576172
它已经在我的tsconfig.json文件中。
答案 14 :(得分:0)
"prettier": "2.2.1",删除它,因为它干扰了语义。
答案 15 :(得分:0)
对我来说,事实证明我们已经使用 package-lock.json 声明的包版本控制有一段时间了,当我由于合并冲突而试图删除它并重新创建它时,错误发生了。当回到旧的 package-lock.json 时,问题就消失了。于是我开始搜索:
我最终使用了 Angular 依赖项,更准确地说是在收到更新的@angular/material-moment-adapter(因为我们在 package.json 中允许它) 从版本 11.2.0 到 11.2.12。
答案 16 :(得分:0)
尝试删除 angular-font-awesome 并再次运行安装:
npm 卸载 angular-font-awesome ng 添加@fortawesome/angular-fontawesome@0.6.0
在我删除 fontawesome 后问题解决了,现在 Material Icons 是我的图标选择。 但我应该说感谢 Font Awesome 多年来提供的免费精美图标 :)
答案 17 :(得分:0)
我遇到了这个和其他错误,因为我试图更新 Angular 9 应用程序的一些边缘库。随后在编译过程中出现的错误毫无意义,因为它们无助于纠正错误。
删除“node_modules”和“npm i”的解决方案不起作用,因为即使我有原始的package.json,“npm i”仍然安装不同版本的库——而不是原始版本。不知道 node_modules 中的库究竟是什么。
唯一有帮助的解决方案是从备份中恢复 node_modules。
否则,如果您需要更新应用程序中的库,请休假并准备一些抗抑郁药,但升级库后几天解决无意义的错误可能仍然无济于事。
答案 18 :(得分: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
时,其他2个也降级了。
最后,ionic build
成功了!此后,我们过着幸福的生活,直到遇到不同的问题。Working packages for our project
答案 19 :(得分:0)
在我的情况下,我从npm安装了angular-font-awesome软件包,然后进行了引导,它可能会发生冲突,我只是删除了先前安装的angular-font-awesome
然后完成ng build
答案 20 :(得分:0)
npm i
ng serve
为我工作
答案 21 :(得分:0)
我通常建议人们在每个成功的部署之后(本地)对项目进行手动备份,因为当您遇到此类问题(与NGCC errors
有关的所有问题)时,您可以硬删除{{1} }文件夹,然后从您的node_modules
还原它。
然后重新构建。
有时候,当您负担不起将last backup
更新到最新版本时,此解决方案将是完美的。
答案 22 :(得分:0)
我有类似的问题,
在我的案例中,将NodeJS更新到新版本很有帮助。
答案 23 :(得分:-1)
用下面的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
}
}