angular 13 ng构建库失败(ivy部分编译模式)

angular 13 ng build library fails (ivy partial compilation mode)

最近我在安装 npm 包(使用 node-gyp)时遇到问题。我尝试将节点的次要版本从版本 16.13.0 升级到 16.13.1,并将我的 angular cli 从 13.0.2 升级到 13.2.0。一旦我得到要安装的包,我就用 ng g library new-library 生成了一个库。我不知道究竟是什么破坏了它,但现在每当我尝试构建库时它都会产生错误。我尝试 ng build my-lib 并得到以下错误。

✖ Compiling with Angular sources in Ivy partial compilation mode.
Transform failed with 1 error:
error: Invalid version: "15.2-15.3"

我尝试恢复节点和 angular cli 的版本,但它没有解决问题。我什至将代码恢复到原来的状态,现在我得到了错误。这是我环境的问题吗?我该如何解决这个问题?

这是 Angular CLI 13.2.0 中的错误。

临时解决方案:

正在从根项目中删除配置 .browserslistrc 文件的内容。 more info

如果您使用 Angular,请从 .browserslistrc 文件中注释掉 Safari。在修复之前,这是一个更好的解决方案。

# last 2 Safari major version

您可以试试这个解决方案

打开.browserslistrc并添加

not ios_saf 15.2-15.3
not safari 15.2-15.3

保存文件并运行再次

ng build

请关注这个 Github 问题: https://github.com/angular/angular-cli/issues/22606

作为解决方法,您可以将以下内容添加到您的浏览器列表配置中。

not safari 15.2-15.3 # TODO: remove once https://github.com/angular/angular-cli/issues/22606 is fixed.

这是 Angular CLI 中的错误,已修复。在您的 package.json 中,将 @angular/cli 更新为 12.2.1613.2.1

来源:https://github.com/angular/angular-cli/issues/22606#issuecomment-1026097996

发生这种情况是因为您的 angular 当前版本不支持 safari 和 ios 15.2-15.3 版本。

此修复适用于 angular 版本 13.2.1

但要在您的版本中修复此错误,您需要做的是在项目的根目录中创建一个名为 .browserslistrc 的文件,其中将包含以下可接受的浏览器版本:

# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries

# For the full list of supported browsers by the Angular framework, please see:
# https://angular.io/guide/browser-support

# You can see what browsers were selected by your queries by running:
#   npx browserslist

last 1 Chrome version
last 1 Firefox version
last 2 Edge major versions
last 2 Safari major versions
last 2 iOS major versions
Firefox ESR
not IE 9-10 # Angular support for IE 9-10 has been deprecated and will be removed as of Angular v11. To opt-in, remove the 'not' prefix on this line.
not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line.
not ios_saf 15.2-15.3
not safari 15.2-15.3

有关angular接受的浏览器版本的更多信息,您可以参考:

https://angular.io/guide/browser-support

错误问题线程访问

https://github.com/angular/angular-cli/issues/22606

希望对您或其他人有所帮助...

谢谢!