Как проигнорировать ошибку "узла" несовместимого движка при установке зависимостей npm с помощью пряжи?

Учитывая это package.json:

{
  "name": "yarn-install-fail",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {},
  "author": "",
  "license": "ISC",
  "dependencies": {
    "aws-sdk": "2.x.x",
    "s3-streams": "^0.3.0"
  }
}

Я могу успешно установить зависимости через npm:

$ npm install

added 27 packages in 1.844s

И все же пряжа выходит из строя:

$ yarn install
yarn install v0.24.5
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
error s3-streams@0.3.0: The engine "node" is incompatible with this module. Expected version "^1.2.0".
error Found incompatible module
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

Кажется, пряжа имеет проблемы при установке библиотеки s3-streams@0.3.0, тем не менее, я предполагал, что все равно будет установлен запасной вариант, как npm было бы.

6 ответов

Решение

Вы действительно можете игнорировать такие ошибки с помощью --ignore-engine:

$ yarn install --ignore-engines
yarn install v0.24.5
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 1.41s.

Это также задокументировано в справке команды:

$ yarn help | grep -- --ignore
    --ignore-scripts                  don't run lifecycle scripts
    --ignore-platform                 ignore platform checks
    --ignore-engines                  ignore engines check
    --ignore-optional                 ignore optional dependencies

"yarn config set ignore-engine true" - одноразовое решение проблемы "узел двигателя несовместим с этим модулем". Как только это будет завершено, вы можете сделать "создать-реагировать-приложение мое приложение"

--ignore-engines не работает с yarn start команда

Итак, есть два решения, чтобы избавиться от этого.

проверьте версию своего узла с помощью:

узел -v

проверьте свою версию npm с помощью:

npm -v

Откройте package.json и убедитесь, что значения, полученные в результате выполнения двух команд выше, совпадают с версиями node а также npm в engines объект.

ИЛИ

Вы можете просто удалить engines из файла package.json, иначе он всегда будет проверять соответствие версии.

Добавить --ignore-engines убрать ошибки

 $ yarn help 
....
    --ignore-scripts                  don't run lifecycle scripts
    --ignore-platform                 ignore platform checks
    --ignore-engines                  ignore engines check
    --ignore-optional                 ignore optional dependencies
....

Если вы столкнулись с этой проблемой, это может быть связано с тем, что у вас несколько версий в вашей системе.

Например, вы могли запустить некоторую команду, которая устанавливает последнюю версию узла в одном месте, но запускаете другую версию узла, потому что этот каталог находится впереди другого каталога в $PATH.

Так что было бы неплохо запустить

which -a node

Если версия nvm устарела, вы можете обновить ее, например, до определенной версии: nvm install 15.4.0

Просто убедитесь, что версии node и npm соответствуют версиям, указанным в вашем package.json:

проверьте версию своего узла через IDE или запустите:

$ node -v
> 8.11.2

затем убедитесь, что это так же, как в вашем package.json:

{
  "name": "yarn-install-fail",
  ...
  "engines": {
    "node": "8.11.2"
  },
  "dependencies": {
    ...
  }
}
Другие вопросы по тегам