【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系列的时机,所以作为暂时的应对措施,逃避可能也是一个选择。

广告
将在 10 秒后关闭
bannerAds