使用 NVM 设置 NestJS 项目时出现 EBADENGINE 警告

EBADENGINE warning when setting up a NestJS project using NVM

这里是新节点开发者。已安装 NVM 并使用最新的 Node LTS:

node --version: v16.13.0
npm --version: 8.1.2

当我按照 Nest 文档中的说明进行操作时:

npm i -g @nestjs/cli

我收到以下警告:

npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@angular-devkit/core@12.2.10',
npm WARN EBADENGINE   required: {
npm WARN EBADENGINE     node: '^12.14.1 || >=14.0.0',
npm WARN EBADENGINE     npm: '^6.11.0 || ^7.5.6',
npm WARN EBADENGINE     yarn: '>= 1.13.0'
npm WARN EBADENGINE   },
npm WARN EBADENGINE   current: { node: 'v16.13.0', npm: '8.1.2' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@angular-devkit/schematics@12.2.10',
npm WARN EBADENGINE   required: {
npm WARN EBADENGINE     node: '^12.14.1 || >=14.0.0',
npm WARN EBADENGINE     npm: '^6.11.0 || ^7.5.6',
npm WARN EBADENGINE     yarn: '>= 1.13.0'
npm WARN EBADENGINE   },
npm WARN EBADENGINE   current: { node: 'v16.13.0', npm: '8.1.2' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@angular-devkit/schematics-cli@12.2.10',
npm WARN EBADENGINE   required: {
npm WARN EBADENGINE     node: '^12.14.1 || >=14.0.0',
npm WARN EBADENGINE     npm: '^6.11.0 || ^7.5.6',
npm WARN EBADENGINE     yarn: '>= 1.13.0'
npm WARN EBADENGINE   },
npm WARN EBADENGINE   current: { node: 'v16.13.0', npm: '8.1.2' }
npm WARN EBADENGINE }

那么,将 NestJS 与 NVM 结合使用是否存在问题?

每个版本的 Node 都附带一个捆绑版本的 NPM,因此当 installing/use 使用 NVM 的特定 Node 版本时,它还会为最初与其捆绑的特定 Node 版本设置 NPM 版本。

这里有一个 JSON 的 NodeJS 发行版,它指出了每个 Node 版本和与之捆绑的 NPM:https://nodejs.org/dist/index.json

以上警告告诉我们问题是什么:

required: {
    node: '^12.14.1 || >=14.0.0',
    npm: '^6.11.0 || ^7.5.6',
},

意味着我可以使用比 v14 更新的 Node 版本(示例:LTS/gallium)但是它捆绑的 NPM 版本 (8.1.0) 不满足上述要求,允许使用最新的次要版本和补丁版本7.5.6.

在 NVM 中使用 Node v16 时,我可以通过 运行:

将其 NPM 版本更改为最新的 v7.x.x
npm install -g npm@7.24.2

在此之后,没有更多警告搭建 Nest 项目(至少目前如此)。