web-dev-qa-db-fra.com

Node - a été compilé avec une version différente de Node.js à l'aide de NODE_MODULE_VERSION 51

J'exécute une application de noeud sur le terminal. J'ai récemment mis à niveau le noeud v8.5.0, mais j'obtiens cette erreur:

Error: The module '/tidee/tidee-au/packages/tidee-au-server/node_modules/bcrypt/lib/binding/bcrypt_lib.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 51. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
    at Object.Module._extensions..node (module.js:653:18)
    at Module.load (module.js:545:32)
    at tryModuleLoad (module.js:508:12)
    at Function.Module._load (module.js:500:3)
    at Module.require (module.js:568:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/tidee/tidee-au/packages/tidee-au-server/node_modules/bcrypt/bcrypt.js:6:16)
    at Module._compile (module.js:624:30)
    at Module._extensions..js (module.js:635:10)
    at Object.require.extensions.(anonymous function) [as .js] (/tidee/tidee-au/packages/tidee-au-server/node_modules/babel-register/lib/node.js:152:7)
    at Module.load (module.js:545:32)
    at tryModuleLoad (module.js:508:12)
    at Function.Module._load (module.js:500:3)
    at Module.require (module.js:568:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/tidee/tidee-au/packages/tidee-au-server/server/helpers/encryptPass.js:1:16)

Aucune idée sur la façon de résoudre ça?

53
JoeTidee

Vous devez supprimer le dossier du module (bcrypt) du dossier node_modules et le réinstaller. Utilisez les commandes suivantes:

$ rm -rf node_modules/bcrypt
$ npm install
// or
$ yarn
49
alexmac

Vous devez reconstruire le paquet et tell npm pour le mettre à jour aussi binaire. Essayer:

npm rebuild bcrypt --update-binary

@robertklep a répondu à une question relative avec cette commande, look .

Seule la reconstruction n'a pas résolu mon problème, cela fonctionne bien dans mon application.

J'espère que ça aide!

30
RPichioli

Symply run:

npm uninstall bcrypt

Suivi par:

npm install bcrypt (ou npm install, si bcrypt est déclaré comme dépendance dans votre package.json fichier)

11
Frosty Z

J'ai eu le même problème et rien mentionné ici a fonctionné pour moi . Voici ce qui a fonctionné pour moi:

  1. Exigez toutes les dépendances dont vous avez besoin dans le fichier main.js exécuté par electron. (cela semblait être la première partie importante pour moi)
  2. Exécutez npm i -D electron-rebuild pour ajouter le paquet electron-rebuild
  3. Supprimez le dossier node-modules, ainsi que le fichier packages-lock.json.
  4. Exécutez npm i pour installer tous les modules.
  5. Exécutez ./node_modules/.bin/electron-rebuild pour tout reconstruire

Il est très important d'exécuter ./node_modules/.bin/electron-rebuild directement après npm i, sinon cela ne fonctionnait pas sur mon mac.

J'espère pouvoir aider certaines âmes frustrées.

9
chitzui

Ce problème est probablement dû à package-lock.json. En quelque sorte, cela semble vous empêcher de recompiler ou de reconstruire vos dépendances, même si vous exécutez explicitement npm rebuild. J'ai couru tout ce qui suit pour le réparer pour moi:

rm package-lock.json;
rm -rf node_modules;
npm install;
8
smets.kevin

J'ai eu la même erreur, mais j'essayais d'exécuter une application de noeud à l'aide d'un conteneur Docker.

Je l'ai corrigé en ajoutant un fichier .dockerignore pour ignorer le répertoire node_modules afin de m'assurer que, lorsque l'image du docker était générée, les packages natifs pour l'image que je voulais (Alpine) étaient générés au lieu d'être copiés sur les node_modules compilés pour mon hôte (Debian) . 

3
Matt
npm rebuild bcrypt --update-binary

J'ai le même paquet promis mais différent, je lance ce code et le traite

3
柴劲松

vous pouvez voir ceci link

pour vérifier votre noeud de verison à droite. utiliser NODE_MODULE_VERSION 51 signifie que la version de votre nœud est nodejs v7.x, nécessite NODE_MODULE_VERSION 57 signifie que vous devez mettre à niveau votre nœud vers la version v8.x. Vous devez donc le mettre à niveau. et vous devez alors exécuter la commande npm rebuild pour reconstruire votre projet

2
liming gao

Assurez-vous de n'avoir qu'une seule version de NodeJS installée. Essayez ces deux:

node --version
Sudo node --version

J'ai initialement installé NodeJS à partir des sources, mais c'était la version incorrecte et "mis à niveau" vers la version la plus récente en utilisant nvm, qui ne supprime aucune version précédente et installe uniquement la version souhaitée dans le répertoire /root/.nvm/versions/.... Donc, Sudo node pointait toujours vers la version précédente, alors que node désignait la version plus récente. 

1
Barkles

Dans mon cas, j'étais dans le proxy de mon bureau, qui omettait certains paquets. Lorsque je suis sorti de mon proxy de bureau et que j'ai essayé de faire npm install, cela a fonctionné. Peut-être que cela aide pour quelqu'un.

Mais il m'a fallu plusieurs heures pour identifier que c'était la raison. 

0
Balasubramanian S

Après avoir essayé différentes choses ... Cela a fonctionné.

Supprimez votre dossier de modules de noeuds et exécutez

npm i
0
Ankit Pandey

Je rencontrais le même problème avec le module grpc et dans mon cas, j’utilisais electron et j’ai défini une version électronique incorrecte dans la variable env "export npm_config_target = 1.2.3"; ma fin J'espère que cela aidera quelqu'un qui définit les variables env comme indiqué ici ( https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way )

0
kohl

Vérifiez la version du nœud que vous utilisez, cela pourrait correspondre à ce à quoi vous vous attendez.

0
cjjenkinson

J'ai eu un problème similaire avec robotjs. Un code obsolète nécessitait le noeud v11, mais j'avais déjà compilé du code électronique sur v12. Donc, j'ai fondamentalement la même erreur. Ici, rien n’a fonctionné, j’essayais de reconstruire électron et mes autres dépendances dans le noeud v11 à partir de la v12.

Voici ce que j'ai fait (une partie de ceci est basé sur la réponse de chitzui, crédit lorsque le crédit est dû):

  • Sauvegardez package.json
  • supprimer complètement le dossier node_modules
  • supprimer complètement package_lock.json
  • supprimer package.json (sera rétabli plus tard)
  • Fermez tous les éditeurs ouverts et les autres fenêtres de commande figurant dans le répertoire du projet.
  • lancez npm init pour relancer le paquet, puis il manque les données avec l'ancien paquet sauvegardé.
  • lancer npm i
  • fixe :)

J'espère que cela t'aides.

0
AirFusion

J'ai eu le même problème et aucune de ces solutions n'a fonctionné et je ne sais pas pourquoi, elles ont travaillé pour moi dans le passé pour des problèmes similaires.

Quoi qu'il en soit, pour résoudre le problème, je viens de reconstruire manuellement le paquet en utilisant node-pre-gyp

cd node_modules/bcrypt
node-pre-gyp rebuild

Et tout a fonctionné comme prévu.

J'espère que cela t'aides

0
wezzy

Vous pouvez supprimer complètement bcrypt et installer bcryptjs. Il est environ 30% plus lent, mais n'a pas de dépendances, donc aucune peine d'installation.

npm i -S bcryptjs && npm uninstall -S bcrypt

Nous l'avons installé avec succès pour nos applications. Bcrypt n'a pas compilé sur des instances AWS pour Node v8.x

0
Daniel N.

Aucun d'entre eux n'a fonctionné pour moi mais ceci:

npm install 
npm start
0
Oguz

Il s'avère que mon problème était erreur d'utilisateur: assurez-vous que la version du noeud que vous utilisez pour l'exécution est identique à celle que vous utilisez lors de l'exécution d'une installation ou d'un fil npm.

J'utilise NVM pour le contrôle de version du noeud et je faisais fonctionner le fil via un terminal, mais mon IDE était configuré pour utiliser une version plus ancienne du noeud lors de son exécution et renvoyait l'erreur ci-dessus. Faire correspondre la version de mon IDE du noeud dans la configuration d'exécution à noeud - version a résolu le problème.

0
Craig Odell

Je viens de recevoir cette erreur en cours d'exécution kadence le script "kadence" installé vérifie d'abord nodejs et n'exécute que node s'il n'y a pas de nodejs. J'ai la dernière version de node liée dans mon répertoire ~/bin mais nodejs exécute une version plus ancienne que j'avais oublié de désinstaller mais que je n'avais jamais causé de problèmes jusqu'à présent.

Donc, les personnes ayant ce problème pourraient vérifier si node et nodejs utilisent réellement la même version de node ...

0
Bill Burdick

Dans mon cas, je courais nodejs au lieu de node. En raison de nodejs installé par le gestionnaire de paquets:

# which node
/home/user/.nvm/versions/node/v11.6.0/bin/node

# which nodejs
/usr/bin/nodejs
0
portforwardpodcast

exécutez npm config set python python2.7 et exécutez npm install à nouveau, la fête est activée.

0
Tebogo Mahlalela

J'ai eu cette erreur lors de l'exécution de mon application avec systemd: 

ExecStart=/usr/local/bin/node /srv/myapp/server.js

Mais j'utilisais une version différente pour npm install dans le shell:

$ which node
/home/keith/.nvm/versions/node/v8.9.0/bin/node

S'il s'agit de votre configuration, vous pouvez coder en dur la version du noeud dans le fichier de service ou suivre une solution de contournement telle que celle-ci

0
Keith

Le problème est peut-être dû à une incohérence des versions du noeud JS. Comme indiqué dans la documentation . Assurez-vous d'utiliser l'un des deux communiqués. Par exemple. spécifiez ceci dans votre Dockerfile:

# Pull lts from docker registry
FROM node:8.12.0

# ...
0
kmos.w