使用 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 项目(至少目前如此)。
这里是新节点开发者。已安装 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.xnpm install -g npm@7.24.2
在此之后,没有更多警告搭建 Nest 项目(至少目前如此)。