50 votes

Erreur NodeJs - Failed to load gRPC binary module because it was not installed for the current system Répertoire attendu ?

Je lance mon application NodeJs et j'obtiens une erreur.

sudo /usr/local/bin/node app.js    
    Error: Failed to load gRPC binary module because it was not installed for the current system
Expected directory: node-v57-linux-x64-glibc
Found: [node-v59-linux-x64-glibc]
This problem can often be fixed by running "npm rebuild" on the current system
Original error: Cannot find module '/home/projects/kj_app/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64-glibc
/grpc_node.node'
    at Object.<anonymous> (/home/projects/kj_app/node_modules/grpc/src/grpc_extension.js:53:17)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/home/projects/kj_app/node_modules/grpc/src/client.js:37:12)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)

Modifier

    sudo /usr/local/bin/npm rebuild

    > protobufjs@6.8.6 postinstall /home/projects/kj_app/node_modules/protobufjs
> node scripts/postinstall
> grpc@1.10.1 install /home/projects/kj_app/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library
[grpc] Success: "/home/projects/kj_app/node_modules/grpc/src/node/extension_binary/node-v59-linux-x64-glibc/grpc_node.node" al
ready installed
Pass --update-binary to reinstall or --build-from-source to recompile
> @google-cloud/profiler@0.1.14 install /home/projects/kj_app/node_modules/@google-cloud/profiler
> node-gyp rebuild
gyp ERR! clean error 
gyp ERR! stack Error: EACCES: permission denied, rmdir 'build'
gyp ERR! System Linux 4.9.0-6-amd64
gyp ERR! command "/opt/bitnami/nodejs/bin/.node.bin" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "
rebuild"
gyp ERR! cwd /home/projects/kj_app/node_modules/@google-cloud/profiler
gyp ERR! node -v v9.8.0
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok 
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @google-cloud/profiler@0.1.14 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the @google-cloud/profiler@0.1.14 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-04-10T16_06_40_444Z-debug.log

3 votes

Il semble que vous essayez d'exécuter le script avec Node 8, mais pour une raison quelconque npm pense qu'il devrait être installé pour Node 9. Aussi, l'exécution de ces scripts avec sudo n'est probablement d'aucune utilité ; vous travaillez dans un répertoire utilisateur, vous ne devriez donc pas en avoir besoin, et npm a un comportement bizarre lorsqu'il est exécuté en tant que Root.

1 votes

Cela se produit généralement lorsque "npm install" est exécuté localement plutôt que dans le conteneur. Toute différence, OS, version de nœud devient un conflit car le module grpc construit n'est pas construit pour les bons spectres. Voir mon commentaire ci-dessous pour une solution.

0 votes

À partir du dossier des fonctions, ouvrez la ligne de commande et entrez npm audit fix

28voto

Tnc Andrei Points 548

Il semble que vous ayez un conflit de versions

Expected directory: node-v57-linux-x64-glibc
Found: [node-v59-linux-x64-glibc]

Avez-vous essayé d'exécuter rebuild npm dans votre dossier d'applications ?

0 votes

Peut-être que cela vous aidera : erreurs de reconstruction de node-gyp #809

1 votes

C'est drôle parce que juste au moment où cette page se chargeait, j'ai remarqué la suggestion dans les journaux de la console d'exécuter npm rebuild. J'espère que la plupart des gens ne sont pas venus ici parce qu'ils ont lu la sortie :-D

18voto

guya Points 601

rebuild npm a fonctionné pour moi :)

Merci à tous ceux qui ont répondu

(En utilisant n avec le nœud v8.15.1 et npm 6.4.1 )

11voto

Mnebuerquo Points 1664

J'ai eu le même problème (en utilisant nvm) et j'ai découvert que la version de mon nœud sélectionné était différente de celle dans .nvmrc . J'ai fait les démarches suivantes pour le réparer :

rm -rf node_modules
nvm use
yarn

J'ai supprimé node_modules parce qu'il aurait pu installer une version de certaines dépendances pour la mauvaise version de node, je veux donc m'assurer que j'ai les bonnes bibliothèques pour la version sélectionnée.

Quand je le fais nvm use il choisit la version du nœud dans la liste des .nvmrc dans mon projet.

Vous pouvez utiliser npm install au lieu de yarn . C'est comme ça que mon projet est monté.

0 votes

J'ai résolu le problème qui s'est produit après avoir changé .nvmrc les dossiers. Merci.

10voto

Sean Stayn Points 1238

J'ai eu le même problème avec Google Cloud Functions et Emulator, après la migration du nœud 6 au nœud 8.

Ma solution :

  1. npm rebuild // aucun effet
  2. supprimer modules de nœuds dans le dossier fonctions dossier
  3. npm install
  4. dans le fonctions appel du dossier : npm i --save firebase-functions
  5. firebase serve // démarrer l'émulateur et essayer

7voto

DeeZone Points 225

Par hasard, avez-vous fait un npm install dans votre local ( node-v59 ) alors qu'il aurait dû être fait sur le conteneur ( node-v57 ) ? Le binaire grpc est pour la mauvaise version du nœud, d'où l'erreur. Dans le cas de la question, il s'agit d'un Mac local (OSX - une version de Linux) qui exécute Linux dans un conteneur Docker.

Expected directory: node-v57-linux-x64-glibc
Found: [node-v59-linux-x64-glibc]

La solution consisterait à rm -fr node_modules et faire npm install dans le conteneur .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X