web-dev-qa-db-fra.com

npm install efface le react-native dans node_modules

Je rencontre un problème lorsque j'essaie d'utiliser npm install pour installer redux dans mon projet react-native. Chaque fois que je lance npm install redux --save, le répertoire react-native à l'intérieur de node_modules sera effacé.

Ensuite, j'utilise rm -rf node_modules && npm install. Le package tout react-native ne s'installe pas à l'intérieur de node_modules. Je dois donc recréer le projet.

J'essaie également de copier et coller les react-redux et redux dans node_modules d'un autre projet dans mon projet react-native actuel. Mais cela ne peut pas réussir, l'erreur m'a conduit à issue sur github. J'ai suivi cette aide et elle a également échoué.

Quelques autres informations:

Pm npm: 5.0.3

➜ react-native-cli: 2.0.1

➜ réagit natif: 0.45.0

➜ package.json

{
    "name": "MyProjectNAME",
    "version": "0.0.1",
    "private": true,
    "scripts": {
        "start": "node node_modules/react-native/local-cli/cli.js start",
        "test": "jest"
    },
    "dependencies": {
        "react": "16.0.0-alpha.12",
        "react-native": "0.45.0",
        "react-redux": "^5.0.5",
        "redux": "^3.6.0"
    },
    "devDependencies": {
        "babel-cli": "^6.24.1",
        "babel-jest": "20.0.3",
        "babel-preset-es2015": "^6.24.1",
        "babel-preset-es2017": "^6.24.1",
        "babel-preset-react-native": "1.9.2",
        "jest": "20.0.4",
        "react-test-renderer": "16.0.0-alpha.12"
    },
    "jest": {
        "preset": "react-native"
    }
}

Toute suggestion est appréciée. Je vous remercie

3
Robust

Je suis content que vous ayez résolu ce problème en utilisant une solution de contournement, mais permettez-moi d'expliquer pourquoi le module react-native a été supprimé de l'exécution de npm install redux --save.

Solution:

  1. Déplacez le package-lock.json hors du dossier du projet (ne le supprimez pas encore car vous devrez l'inspecter ultérieurement)
  2. Exécuter rm -rf node_modules && npm install
  3. Vérifiez les/node_modules et react-native devrait être là maintenant
  4. Exécutez npm install redux (npm v5 sera --save par défaut) pour installer redux sans que les modules existants soient supprimés

Qu'est-ce que package-lock.json?

Il y a beaucoup de changements pour npm v5 que vous pouvez lire ici . L'un d'eux est de générer package-lock.json (lockfile) chaque fois que npm modifie/node_modules ou package.json. 

Avec package-lock.json, toute personne exécutant npm install (v5) obtiendra exactement la même arborescence node_modules que celle que vous avez développée. Donc, vous devez aussi valider ce fichier.

Pourquoi le module react-native et les autres ont-ils été supprimés après l'exécution de npm install somePackageName, même s'ils sont définis dans le package.json?

La suppression s’est produite parce que vos modules de nœud existants ont été installés avant npm v5. Si vous utilisez npm v5 pour installer un module (par exemple, npm install redux), vous remarquerez trois choses:

  1. package-lock.json sera généré (ou mis à jour s'il existe). Redux et ses dépendances y sont sauvegardés.
  2. Le package.json de redux est différent des modules de nœud installés avant npm v5 (certains préfixes de champs supplémentaires avec _, par exemple, _from, _requiredBy, _solved, etc.).
  3. Enfin, tout module installé avant la v5 sera supprimé, ce qui, je suppose, en raison des champs supplémentaires manquants dans son package.jsonETn'existe pas dans le nouveau package-lock.json généré.

Donc, relancer rm -rf node_modules && npm install ne résoudra pas le problème à cause du fichier package-lock.json (N'oubliez pas que seuls les fichiers redux et leurs dépendances ont été enregistrés dans le fichier? Vous pouvez vérifier l'ancien package-lock.json)

J'espère que cela pourrait aider quelqu'un d'autre.

7
max23_

Enfin, j'ai résolu ce problème en 2 étapes:

1) Créer un projet reactjs et installer redux

2) Copiez tout le contenu de node_modules à l'étape 1 et collez-le dans mon projet react-native actuel.

Recharger l'application. Tout fonctionne bien.

0
Robust