NestJS 在尝试安装类验证器和类转换器时"Warn EBADENGINE unsupported engine @angulardevkit"



我正在学习NestJS网站上的课程。我需要安装类验证器和类转换器npm i class-validator class-transformer

但是当我这样做时,我得到错误:

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.11.0', npm: '8.0.0' }
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.11.0', npm: '8.0.0' }
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.11.0', npm: '8.0.0' }
npm WARN EBADENGINE }

我不知道如何解决这个问题。

NestJS和Angular似乎意识到了这个问题,因为两个团队在GitHub Memory上进行了简短的讨论。最新版本的Angular不支持npm 8或更高版本?

但是看起来Angular团队在2021年10月20日(4天前)发布了一个修复这个问题的版本

我使用的是Ubuntu 20.04
Node 16.11
npm 8

我需要做什么来解决这个问题?

更新18.11.2021:

NestJS已经更新了依赖项(特别是@nestjs/cli@8.1.5),所以现在你可以更新你的项目依赖关系(只需运行npm update),并切换回使用npm@8(只需运行npm install -g npm@8)。

原始答:

是的,你今天应该做的是把npm降级到版本7。要做到这一点,只需运行npm install -g npm@7

angular已经添加了Npm v8支持(https://github.com/angular/angular-cli/blob/master/CHANGELOG.md#12211-2021-10-20),但我们仍在等待NestJS更新依赖项。一旦发生这种情况,你应该可以通过运行npm i -g npm@8切换回npm v8。