【Angular】由于ngx-build-plus无法与Angular14进行升级而引发的问题
这篇文章对于有用的人来说是有帮助的。
-
- Angularを13 -> 14に上げようとしている人(まぁ最新は15系なのだが)
-
- ビルドにngx-build-plusを使っている人(angular.jsonを見て確認してね)
- Yarnを使っている人
ngx-build-plus -> NGX构建加强版
听说有一个外部库可以用来扩展angular cli的webpack配置。
我认为大家大多数都在基于 @angular-devkit/build-angular 进行开发,并且该工具包具有扩展性,可以使用相同的方式进行开发。
无法跟上Angular14的升级问题。
在升级 Angular 从 13 版本到 14 版本之后,在使用以下命令尝试升级 ngx-build-plus 到 14 系列时出现错误。
% yarn ng update ngx-build-plus@14 --allow-dirty
yarn run v1.22.19
$ ng update ngx-build-plus@14 --allow-dirty
The installed Angular CLI version is outdated.
Installing a temporary Angular CLI versioned 14.2.10 to perform the update.
✔ Package successfully installed.
Repository is not clean. Update changes will be mixed with pre-existing changes.
Using package manager: 'yarn'
Collecting installed dependencies...
Found 52 dependencies.
Fetching dependency metadata from registry...
Updating package.json with dependency ngx-build-plus @ "14.0.0" (was "13.0.1")...
UPDATE package.json (2327 bytes)
error @schematics/angular@15.2.4: The engine "node" is incompatible with this module. Expected version "^14.20.0 || ^16.13.0 || >=18.10.0". Got "14.19.3"
error Found incompatible module.
✖ Package install failed, see above.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
错误的内容是node版本太低了,但这并不是本质问题。
即使我按照要求提升了node的版本,也不能解决后续的问题。需要关注的是@schematics/angular的版本。
就像这个问题所说,ngx-build-plus在@schematics/angular和@angular-devkit/build-angular之间的依赖关系已经升级到14系以上,导致它们内部所包含的库版本变成了最新的15系,这就导致了不兼容的问题。
临时的应对措施
在 package.json 文件中固定这些库的版本是最简单的方法。
只需添加以下描述,然后再次执行升级即可。
"resolutions": {
"@angular-devkit/build-angular": "14.2.10",
"@schematics/angular": "14.2.10"
}
我认为可能有一个在不久的将来提升到15系列的时机,所以作为暂时的应对措施,逃避可能也是一个选择。