Предупреждение EBADENGINE при настройке проекта NestJS с использованием NVM

#nestjs

Вопрос:

Новый разработчик узлов здесь. Установлена NVM и используется последняя версия Node LTS:

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

Когда я следую инструкциям в документации по гнезду:

 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 || gt;=14.0.0', npm WARN EBADENGINE npm: '^6.11.0 || ^7.5.6', npm WARN EBADENGINE yarn: 'gt;= 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 || gt;=14.0.0', npm WARN EBADENGINE npm: '^6.11.0 || ^7.5.6', npm WARN EBADENGINE yarn: 'gt;= 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 || gt;=14.0.0', npm WARN EBADENGINE npm: '^6.11.0 || ^7.5.6', npm WARN EBADENGINE yarn: 'gt;= 1.13.0' npm WARN EBADENGINE }, npm WARN EBADENGINE current: { node: 'v16.13.0', npm: '8.1.2' } npm WARN EBADENGINE }  

Итак, есть ли проблема с использованием NestJS с NVM?

Комментарии:

1. NPM v8.1.2 действительно несовместим с требованием ^6.11.0 || ^7.5.6 .

2. Я забыл упомянуть, что впоследствии я обновил NPM, думая, что обновление решит вышеуказанные проблемы с EBADENGINE, поэтому я сделал: nvm install-latest-npm. До этого у меня был NPM 8.1.0 с теми же проблемами.

3. Как бы обновление NPM исправило это, учитывая, что оно сообщает вам, что используемая вами версия уже слишком новая? 8.1.2 не более совместим с этой спецификацией, чем 8.1.0.

4. просто не обращай на них внимания. Или переключитесь на пряжу xD

5. Я понижу рейтинг NPM и посмотрю, как все пойдет. Спасибо!

Ответ №1:

Каждая версия узла поставляется в комплекте с версией NPM, поэтому при установке/использовании определенной версии узла с помощью NVM он также устанавливает версию NPM для этой конкретной версии узла, которая изначально была в комплекте с ним.

Вот JSON дистрибутивов NodeJS, в котором указана версия каждого узла и NPM в комплекте с ним: https://nodejs.org/dist/index.json

Приведенные выше предупреждения говорят нам, в чем проблема:

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

Это означает, что я могу использовать более новую версию узла, чем v14 (пример: LTS/gallium), но версия NPM в комплекте (8.1.0) не соответствует вышеуказанным требованиям, позволяя использовать последнюю версию 7.5.6 для второстепенных и исправлений.

При использовании узла v16 в NVM я мог бы изменить его версию NPM на последнюю версию v7.x.x, запустив:

 npm install -g npm@7.24.2  

После этого больше не было предупреждающих лесов для проекта Гнезда (по крайней мере, на данный момент).