Как проигнорировать ошибку "узла" несовместимого движка при установке зависимостей 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": {
...
}
}