web-dev-qa-db-fra.com

Mécanisme approprié pour rétrograder natif

Ma situation est la suivante:

J'ai eu une copie de travail d'un projet natif de réaction qui fonctionnait bien. Avait-il commis sur mon référentiel git.

J'ai décidé de mettre à niveau les versions natives de react-native à 0.26.3, puis à 0.28, pour finalement aboutir à un gros désordre de dépendance avec des collisions. Alors décidé de revenir à la version de travail précédente. Retourné les changements. Le dossier node_modules a été supprimé de mon répertoire de travail. 

Mais maintenant, npm install ne fonctionne tout simplement pas. 

Mes dépendances de travail dans 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"
  }

Maintenant je reçois

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 react@^0.14.0 || ^15.0.0-0

Cela n'a tout simplement aucun sens pour moi, car ma dépendance à réagir est de 15.0.2 et de réactif 0.26.0, comme vous pouvez le constater dans package.json.

Notez que cela provient d'un commit précédent qui fonctionnait (le tout) . J'ai aussi fait un npm ls. Des dépendances étrangement incorrectes sont affichées dans l'arborescence, comme des versions incorrectes de react-native, react-native-router-flux, react.

lien vers la sortie ls

16

Veuillez mettre à jour votre dépendance react dans package.json pour qu'elle soit explicitement 15.0.2, et non pas ^15.0.2 car ce dernier a été résolu en 15.1.0, ce qui est à l'origine de ce problème. Il est recommandé de le laisser ainsi jusqu'à la prochaine mise à niveau et avoir à nouveau cette erreur (pour éviter que react ne change de version entre-temps et que react-native ne soit pas prêt pour cela).

De plus, avec npm3 EPEERINVALID n'est plus une erreur, mais un avertissement.

7
Mike Grabowski

Pour les projets existants, si vous souhaitez installer/rétrograder à une version inférieure 

npm install [email protected]  ex: npm install [email protected]

Cela installera la version spécifiée. 

Vérifiez la version installée react-native -version

13
chetan

Essayez npm Prune puis npm i à nouveau.

La commande npm Prune supprimera fondamentalement tous les packages indésirables et npm i s'assurera que tous les packages manquants sont installés.

3
Rohit Shedage

Mise à jour 2018

Juste courir 

npm install [email protected]

Remplacez 0.43.8 par la version dont vous avez besoin.

2
Saranjith

Le déclassement de React Native nécessite des étapes manuelles. Je recommande d'utiliser RN-DIFF repo https://github.com/ncuillery/rn-diff . voici mes pas

  1. Recherchez la version que vous souhaitez rétrograder dans RN-DIFF, cliquez sur l’affichage de comparaison, puis mettez à jour votre package.json afin que react-native et react correspondent à la même version dans RN-DIFF => package.json. voici un exemple
  2. Annule toutes les modifications apportées aux fichiers telles qu'elles sont affichées dans RN-Diff. Comparez les mises à jour mineures de la vue (vous pouvez ignorer les correctifs).
  3. Supprimer le dossier node_modules, effacer Watchman, réinitialiser le cache du métro, effacer les fichiers en cache ios et les fichiers en cache Android.
  4. yarn install

Remarque: Si vous rétrogradez plusieurs versions mineures. Par exemple, de 0.56.0 à 0.54.4, vous devez rétrograder une version à la fois. Passez tout d'abord à la version 0.55.4, vérifiez que cela fonctionne sous iOS et Android, puis passez à la version inférieure.

1
Guy

Si vous utilisez react-native, vous pouvez modifier votre fichier package.json avec les versions dont vous avez besoin, puis supprimer tous vos modules de noeud rm -rf node_modules, puis réinstaller npm 

0
David Vittori