Angular 14 CLI 与节点版本 18.12.1 不兼容

Angular 14 CLI is not compatible with node version 18.12.1

提问人:Nimasha Madhushani 提问时间:1/7/2023 更新时间:1/10/2023 访问量:4420

问:

Angular 15 CLI 与节点版本 18.12.1 兼容。但是在降级到 Angular CLI 14 后,现有的节点版本不受支持。我正在寻找与 Angular 14 CLI 兼容的最大节点版本

enter image description here

angular-cli 版本 angular14 降级

评论

0赞 kellermat 1/7/2023
也许这里显示的兼容性列表可能对您有用:stackoverflow.com/questions/60248452/......
1赞 Nimasha Madhushani 1/8/2023
谢谢@kellermat,我在降级时也注意到了一些事情,我会把它作为一个答案
0赞 Nimasha Madhushani 1/9/2023
@kellermat 你知道吗,为什么angular 15和最新的节点版本不兼容?
1赞 Nimasha Madhushani 1/10/2023
好吧,当然,那我会这样做的。很高兴不断回复非常重要的观点
1赞 kellermat 1/10/2023
我突然意识到,我们应该更多地关注“兼容的 Node.js 版本”和“支持的 Node.js 版本”(相对于特定的 Angular 版本)之间的区别。因此,我删除了我之前的评论,并创建了一个全面的答案。

答:

1赞 Nimasha Madhushani 1/8/2023 #1

Angular 14 不支持最新的节点版本。但与 Angular 15 兼容。

为什么 angular 15 与最新的节点版本不兼容?

Node v18.13.0 (LTS) 发布于 2023-01-06,所以是在 Angular 15.0.0 (2022-11-16) 发布之后。因此,Angular 15.0.0 仅保证与 Node 18.10.x 的兼容性。

兼容性列表:

但是,在节点版本 14.17.3 中,找不到模块。Node 版本 16.16.0 适用于 Angular 14'node:assert'

降级节点版本的步骤:

  1. 以管理员身份运行命令提示符。

  2. 然后,使用 检查已安装的节点版本。node -v

  3. 现在,您必须安装 .您可以通过此链接下载 NVM 可执行文件 () 并将其安装在您的计算机上。然后对于 Windows 和 nvm ,命令 是:。nvmnvm-setup.exenvm install <version>

NVM 是 Node Version Manager 的缩写,是一个命令行工具,用于管理和切换到不同版本的 Node.js。

  1. 现在,您必须检查计算机中安装的nvm列表。自 在命令提示符下运行。nvm list

  2. 之后,它显示当前使用 64 位的版本 可执行

  3. 然后,您可以将其切换到您期望的版本。nvm use <version>

  4. 现在命令提示符将显示如下,

    Now using node v16.16.0 (64-bit)
    

Comand 提示符:

C:\Users\Acer>nvm -v
1.1.10

C:\Users\Acer>nvm install v16.10.0
Downloading node.js version 16.10.0 (64-bit)...
Extracting node and npm...
Complete

C:\Windows\system32>nvm list

    18.12.1
    16.16.0
    16.10.0
  * 14.17.3 (Currently using 64-bit executable)

C:\Windows\system32>nvm use 16.16.0
Now using node v16.16.0 (64-bit)

C:\Windows\system32>node -v
v16.16.0

C:\Users\Acer>nvm list
    18.12.1
  * 16.16.0 (Currently using 64-bit executable)
    16.10.0
    14.17.3

现在,您可以看到 .* 16.16.0 (Currently using 64-bit executable)

评论

1赞 Nimasha Madhushani 1/10/2023
非常清楚和重要。谢谢@kellermat
1赞 kellermat 1/10/2023 #2

我建议明确区分“兼容”和“被支持”。

与特定 Angular 版本兼容的 Node.js 版本

如果 Node.js 版本与特定的 Angular 版本兼容,这意味着您可以同时使用两者,但它们不一定经过组合测试。

例如 的显示此版本与 (14.x.x) 的所有次要版本和补丁版本以及等于或大于(甚至最新的 19.x.x)的所有版本兼容:package.json@angular/cli 14.0.0Node.js 14Node 16.10.0

"node": "^14.15.0 || >=16.10.0",

提示:您可以在 https://www.npmjs.com/package/@angular 下找到上述信息,当转到“版本”选项卡时,选择您感兴趣的版本,然后返回“代码”选项卡,在其中打开。package.json

特定 Angular 版本支持的 Node.js 版本

如果一个 Node.js 版本(官方)被特定的 Angular 版本支持,这意味着 Angular 开发人员已经组合测试了它们,如果组合导致任何问题,他们将提供支持(如果仅给出“兼容性”,则后者不会出现这种情况)。因此,“支持”是一个比“兼容”更严格的标准。

例如 支持 (18.10.x) 的所有修补程序版本。这是有道理的,因为是在不久前发布的。@angular/cli 15.0.0Node.js 18.10Node.js 18.10.0Angular 15

提示:您可以在 Angular 的官方更新文档中找到支持的 Node.js 版本。例如:https://angular.io/guide/update-to-version-15Angular 15

结论

线程标题实际上应该为“为什么 Angular CLI 14 不支持节点版本 18.12.1”。另一方面,兼容性将由任何未来的 Node.js 版本实现,因为 Angular CLI 14 声明: .它甚至可能与“Node.js 18.12.1”顺利运行。至少在我自己的测试中,到目前为止还没有出现任何问题。>=16.10.0Angular 14 CLI