Правильный механизм понижения
Моя ситуация такова:
У меня была рабочая копия проекта реагирования, который работал хорошо. Если бы он был отправлен в мой репозиторий git.
Я решил обновить action-native до 0.26.3, а затем 0.28 и, наконец, оказался в большом беспорядке зависимости с коллизиями. Поэтому решили вернуться к предыдущей рабочей версии. Отменил изменения. Удалена папка node_modules из моего рабочего каталога.
Но теперь npm install
просто не будет работать.
Мои рабочие зависимости в package.json
"dependencies": {
"immutable": "^3.8.1",
"key-mirror": "^1.0.1",
"react": "^15.0.2",
"react-native": "^0.26.0",
"react-native-router-flux": "^3.26.1",
"react-redux": "^4.4.5",
"redux": "^3.5.2",
"redux-thunk": "^2.1.0",
"strformat": "0.0.7"
},
"devDependencies": {
"babel-core": "^6.10.4",
"babel-jest": "^12.1.0",
"babel-preset-es2015": "^6.9.0",
"babel-preset-react-native": "^1.9.0",
"babel-register": "^6.9.0",
"chai": "^3.5.0",
"fetch-mock": "^4.5.4",
"jest-cli": "^12.1.1",
"mocha": "^2.5.3",
"mockery": "^1.7.0",
"nock": "^8.0.0",
"redux-mock-store": "^1.1.1",
"sinon": "^1.17.4",
"sinon-chai": "^2.8.0",
"sinon-stub-promise": "^2.0.0"
}
Теперь я получаю
npm ERR! peerinvalid The package [email protected] does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer [email protected] wants [email protected]
npm ERR! peerinvalid Peer [email protected] wants [email protected]^0.14.0 || ^15.0.0-0
Это просто не имеет смысла для меня, так как моя реакция зависит от 15.0.2 и response-native 0.26.0, как вы можете видеть в package.json.
Обратите внимание, что это результат предыдущей транзакции, которая работала (вся партия).
Я также сделал npm ls
. Наверное, неправильные зависимости показаны в дереве как неправильные версии react-native
, react-native-router-flux
, react
.
ссылка на вывод ls
Ответы
Ответ 1
Обновите свою зависимость react
в package.json явно 15.0.2
, а не ^15.0.2
, так как последняя разрешает 15.1.0
, которая вызывает эту проблему. Рекомендуется оставить его таким образом, пока вы не обновляетесь в следующий раз и не получите эту ошибку еще раз (чтобы react
не изменил свою версию, а react-native
не был готов к ней).
Кроме того, с npm3 EPEERINVALID
больше не является ошибкой, а предупреждением.
Ответ 2
Для существующих проектов, если вы хотите установить/понизить до более низкой версии
npm install [email protected] ex: npm install [email protected]
Это установит указанную версию.
Проверьте установленную версию react-native -version
Ответ 3
Попробуйте npm prune
, а затем npm i
снова.
Команда npm prune
будет в основном удалять все нежелательные пакеты, а npm i
будет гарантировать, что все отсутствующие пакеты установлены.
Ответ 4
Обновление 2018
Просто беги
npm install [email protected]
Замените 0.43.8
версией, которая вам нужна.
Ответ 5
Понижение версии React Native требует ручных действий. Я рекомендую использовать репозиторий RN-DIFF https://github.com/ncuillery/rn-diff. вот мои шаги
- Найдите версию, которую вы хотите понизить, в RN-DIFF, щелкните по представлению сравнения, затем обновите ваш package.json, чтобы он
react-native
и react
на совпадение с той же версией в RN-DIFF => package.json. вот пример - Отменить все изменения, внесенные в файлы, как показано в незначительных обновлениях представления RN-Diff сравнения (Вы можете игнорировать исправления)
- Удалите папку node_modules, очистите сторож, сбросьте кэш метрополитена, очистите кэшированные файлы ios и Android-кэшированный файл.
-
yarn install
Примечание: если вы понижаете несколько минорных версий. Например, с 0.56.0 до 0.54.4, вы должны понизить одну версию за раз. Сначала перейдите на версию 0.55.4, проверьте, работает ли она на iOS и Android, затем перейдите на более низкую версию
Ответ 6
Если вы используете native-native, вы можете изменить файл package.json с необходимыми версиями и затем удалить все ваши модули node rm -rf node_modules, а затем переустановить npm install
Ответ 7
Это работает для меня, я сделал так, как сказал Дэвид Витори. просто измените версию response-native в вашем package.json (для меня это была версия от 0.58.5 до 0.57.3), удалите папку node_modules и переустановите с помощью "npm install"