web-dev-qa-db-fra.com

Erreur NodeJs - Impossible de charger le module binaire gRPC car il n'a pas été installé pour le système actuel. Répertoire attendu?

J'utilise 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

    > [email protected] postinstall /home/projects/kj_app/node_modules/protobufjs
> node scripts/postinstall
> [email protected] 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/[email protected] 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/[email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the @google-cloud/[email protected] 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
10
Sudhanshu Gaur

J'ai eu le même problème (utilisation de nvm) et j'ai constaté que la version de mon nœud sélectionné était différente de celle de .nvmrc. J'ai suivi les étapes suivantes pour résoudre ce problème:

rm -rf node_modules
nvm use
yarn

J'ai supprimé node_modules car il a peut-être installé une version de certaines dépendances pour une version incorrecte du nœud. Je souhaite donc m'assurer que j'ai les bonnes bibliothèques pour la version sélectionnée.

Quand je fais nvm use, il sélectionne la version du noeud à partir du .nvmrc de mon projet.

Vous pouvez utiliser npm install au lieu de yarn. C'est comme ça que mon projet est mis en place.

5
Mnebuerquo

Il semble que vous ayez un conflit de verion

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

Avez-vous essayé d'exécuter npm rebuild dans le dossier de votre application?

4
Tnc Andrei

J'ai eu le même problème avec Google Cloud Functions et Emulator après la migration du noeud 6 vers le noeud 8. 

Ma solution:

  1. npm rebuild // pas d'effet
  2. delete node_modules dossier dans le dossier functions
  3. npm install
  4. dans l'appel du dossier functions : npm i --save firebase-functions
  5. firebase serve // démarrez l'émulateur et essayez
1
Sean Stayn

Avez-vous fait un npm install dans votre local (node-v59) alors que cela aurait dû être fait sur le conteneur (node-v57)? Le binaire grpc correspond à la mauvaise version du noeud, d'où l'erreur. Cela arrive souvent avec un Mac local exécutant un conteneur Linux Docker.

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

La solution serait rm -fr node_modules et do npm install dans le conteneur.

0
DeeZone