Правильный механизм понижения

Моя ситуация такова:

У меня была рабочая копия проекта реагирования, который работал хорошо. Если бы он был отправлен в мой репозиторий 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. вот мои шаги

  1. Найдите версию, которую вы хотите понизить, в RN-DIFF, щелкните по представлению сравнения, затем обновите ваш package.json, чтобы он react-native и react на совпадение с той же версией в RN-DIFF => package.json. вот пример
  2. Отменить все изменения, внесенные в файлы, как показано в незначительных обновлениях представления RN-Diff сравнения (Вы можете игнорировать исправления)
  3. Удалите папку node_modules, очистите сторож, сбросьте кэш метрополитена, очистите кэшированные файлы ios и Android-кэшированный файл.
  4. 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"