web-dev-qa-db-fra.com

erreur EACCESS de démarrage de react-native pour setup_env.sh

J'ai donc eu mon premier projet dans ReactNative à exécuter à partir de Windows pour Android OS. J'ai pris une commande sur un Mac, je l'ai configuré de la même manière et pendant que j'essaie de démarrer le gestionnaire de packages de React en utilisant react-native start et obtenez l'erreur suivante:

child_process.js:506
    throw err;
    ^
Error: spawnSync /Users/UserName/Desktop/Path/node_modules/react-native/local-cli/setup_env.sh EACCES
    at exports._errnoException (util.js:1022:11)
    at spawnSync (child_process.js:461:20)
    at Object.execFileSync (child_process.js:498:13)
    at Object.run (/Users/UserName/Desktop/Path/node_modules/react-native/local-cli/cliEntry.js:156:16)
    at Object.<anonymous> (/usr/local/lib/node_modules/react-native-cli/index.js:117:7)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)

Je suis conscient qu'il essaie uniquement de définir l'ulimit (limite de fichier ouvert) à 2048, ce qui est autorisé pour les utilisateurs non root. A également essayé d'exécuter la commande avec Sudo en lui accordant des autorisations root. Fonctionnement ulimit -a sur la machine a révélé une limite de 256 fichiers ouverts et j'ai essayé de changer la valeur par défaut 2048 en ceci. J'ai essayé de l'augmenter à 4096 et de supprimer complètement la commande. Semble ne faire aucune différence quoi que ce soit et l'erreur persiste.

A créé un nouveau projet en utilisant react-native init DemoProject et le packager semble démarrer dans ce dossier donc le problème est autre chose?

Mon package.json est:

{
  "name": "React Native",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "native-base": "^0.5.18",
    "react": "15.4.1",
    "react-addons-shallow-compare": "^15.4.1",
    "react-native": "0.39.2",
    "react-native-drawer": "^2.3.0",
    "react-native-icons": "^0.7.1",
    "react-native-loading-spinner-overlay": "^0.4.1",
    "react-native-md-textinput": "^2.0.4",
    "react-native-overlay": "^0.5.0",
    "react-native-scrollable-tab-view": "^0.7.0",
    "react-native-tab-view": "0.0.40",
    "react-redux": "^4.4.6",
    "react-timer-mixin": "^0.13.3",
    "redux": "^3.6.0"
  },
  "devDependencies": {
    "babel-jest": "17.0.2",
    "babel-preset-react-native": "1.9.0",
    "jest": "17.0.3",
    "react-test-renderer": "15.4.1"
  },
  "jest": {
    "preset": "react-native"
  }
}

En outre, si cela importe, j'ai la sinopie, la navigateur et le fil installés dans le monde entier.

Pour commencer, je ne sais pas si je devrais ajouter toutes les dépendances locales via npm encore une fois sur le Mac, puis simplement copier mon code ou cela devrait aller et quelque chose d'autre ne va pas.

Ce serait formidable si je pouvais régler cela sans rajouter de dépendances. Merci d'avance.

21

Je devais simplement aller dans le répertoire de mon projet de base et exécuter

chmod -R 777 node_modules

68

C'est un bug de npm. Avant de corriger le bogue, vous avez 2 façons de résoudre le problème:

  1. Rétrograder la version npm à 5.3.0
  2. Après npm i react-native, exécutez chmod -R 775 node_modules
10
jerry

dans mon cas, l'erreur était avec un fichier particulier quand je le fais react-native link:

 Erreur: spawnSync ~/native-starter-kit/node_modules/react-native/local-cli/setup_env.sh EACCES 

donc je l'ai corrigé en exécutant: chmod +x sur ce fichier.

2
redochka
chmod -R 777 node_modules

Ça marche vraiment!

0
Noman Gul

Comme l'a souligné Jerry, il s'agit d'un bogue dans NPM. Un correctif est disponible maintenant. Vous pouvez mettre à jour NPM avec npm i -g npm.

J'ai mis à jour vers la version 5.4.2 (npm --version), supprimé React Native avec npm remove --save react-native et réinstallé RN avec npm i --save react-native. Cela a résolu le problème pour moi.

(Comme alternative, vous voudrez peut-être essayer le fil au lieu de npm.)

0
cutemachine