wake-up-neo.com

Node - wurde mit NODE_MODULE_VERSION 51 gegen eine andere Node.js-Version kompiliert

Ich führe eine Knotenanwendung auf dem Terminal aus. Wurde kürzlich auf Knoten v8.5.0 aktualisiert, erhalte jedoch diesen Fehler

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)

Irgendeine Idee, wie man das löst?

53
JoeTidee

Sie müssen den Modulordner (bcrypt) aus dem Ordner node_modules entfernen und ihn erneut installieren. Verwenden Sie dazu die folgenden Befehle:

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

Sie müssen das Paket neu erstellen und npm mitteilen, es soll auch binär sein. Versuchen:

npm rebuild bcrypt --update-binary

@robertklep hat eine relative Frage mit diesem Befehl beantwortet: look .

Nur die Neuerstellung hat mein Problem nicht gelöst, das funktioniert in meiner Anwendung gut.

Ich hoffe es hilft!

30
RPichioli

Einfach ausführen:

npm uninstall bcrypt

Gefolgt von:

npm install bcrypt (oder npm install, wenn bcrypt in Ihrer package.json datei als Abhängigkeit deklariert ist)

11
Frosty Z

Ich hatte das gleiche Problem und nichts, das hier erwähnt wurde, arbeitete für mich ..__ Hier ist, was für mich funktioniert:

  1. Erfordern alle Abhängigkeiten, die Sie in der main.js-Datei benötigen, die von Elektron ausgeführt wird. (Dies schien der erste wichtige Teil für mich zu sein)
  2. Führen Sie npm i -D electron-rebuild aus, um das Paket electron-rebuild hinzuzufügen
  3. Entfernen Sie den Ordner node-modules sowie die Datei packages-lock.json.
  4. Führen Sie npm i aus, um alle Module zu installieren.
  5. Führen Sie ./node_modules/.bin/electron-rebuild aus, um alles neu zu erstellen

Es ist sehr wichtig, ./node_modules/.bin/electron-rebuild direkt nach npm i auszuführen, andernfalls hat es auf meinem Mac nicht funktioniert.

Ich hoffe, ich konnte einigen frustrierten Seelen helfen.

9
chitzui

Wahrscheinlich haben Sie dieses Problem aufgrund der package-lock.json. Irgendwie scheint es Sie daran zu hindern, Ihre Abhängigkeiten neu zu kompilieren oder neu zu erstellen, selbst wenn Sie npm rebuild explizit ausführen. Ich habe folgende Schritte ausgeführt, um das Problem zu beheben:

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

Ich habe die gleiche Fehlermeldung erhalten, habe jedoch versucht, eine Knotenanwendung mit einem Docker-Container auszuführen.

Ich habe das Problem behoben, indem ich eine .dockerignore -Datei hinzugefügt habe, um das node_modules -Verzeichnis zu ignorieren, um sicherzustellen, dass beim Erstellen des Docker-Images die nativen Pakete für das von mir gewünschte Image erstellt werden (Alpine), anstatt die für meinen Host kompilierten node_modules zu kopieren (Debian) . 

3
Matt
npm rebuild bcrypt --update-binary

Ich habe das gleiche Promble, aber ein anderes Paket. Ich führe diesen Code aus und kümmere mich darum

3
柴劲松

sie können diesen Link sehen

um zu überprüfen, ob Ihr Knoten richtig ist. Wenn Sie NODE_MODULE_VERSION 51 verwenden, bedeutet dies, dass Ihre Knotenversion nodejs v7.x ist. NODE_MODULE_VERSION 57 bedeutet, dass Sie Ihren Knoten auf v8.x aktualisieren müssen. und dann müssen Sie den Befehl npm rebuild ausführen, um Ihr Projekt neu zu erstellen

2
liming gao

Stellen Sie sicher, dass nur eine Version von NodeJS installiert ist. Versuchen Sie diese beiden:

node --version
Sudo node --version

Ich habe NodeJS ursprünglich vom Quellcode aus installiert, aber es war die falsche Version und wurde mit nvm auf die neueste Version "aktualisiert". Dadurch werden keine früheren Versionen entfernt und die gewünschte Version wird nur im Verzeichnis /root/.nvm/versions/... installiert. So zeigte Sudo node immer noch auf die vorherige Version, während node auf die neuere Version zeigte. 

1
Barkles

In meinem Fall befand ich mich in meinem Büro, in dem einige Pakete übersprungen wurden. Als ich aus meinem Büro-Proxy herauskam und versuchte, npm install zu tun, hat es funktioniert. Vielleicht hilft das jemandem.

Aber es dauerte mehrere Stunden, bis ich herausfand, dass dies der Grund war. 

0

Nachdem ich verschiedene Dinge ausprobiert hatte ... Das hat funktioniert.

Löschen Sie Ihren Knotenmodulordner und führen Sie ihn aus

npm i
0
Ankit Pandey

Ich hatte das gleiche Problem mit dem grpc-Modul und in meinem Fall habe ich ein Elektron verwendet und in der env-Variablen "export npm_config_target = 1.2.3" eine falsche Elektronenversion eingestellt. Dadurch wurde die von mir verwendete Elektronenversion festgelegt mein Ende. Ich hoffe, das hilft jemandem, der die Umgebungsvariablen so festlegt, wie hier angegeben ( https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way )

0
kohl

Überprüfen Sie die verwendete Node-Version. Möglicherweise stimmt das nicht mit dem überein, was erwartet wird.

0
cjjenkinson

Ich hatte ein ähnliches Problem mit Robotern. Es gab veralteten Code, der den Knoten v11 erforderte, aber ich hatte den Elektronencode bereits auf v12 kompiliert. Also habe ich im Grunde den gleichen Fehler bekommen. Hier hat nichts funktioniert, da ich im Grunde versucht habe, das Elektron und meine anderen Abhängigkeiten in Knoten v11 von v12 wiederherzustellen.

Hier ist, was ich getan habe (ein Teil davon basiert auf Chitzuis Antwort, Kredit, wo Kredit fällig ist):

  • Sichern Sie package.json
  • löschen Sie den Ordner node_modules vollständig
  • löschen Sie package_lock.json vollständig
  • package.json löschen (wird später neu gestartet)
  • Schließen Sie alle geöffneten Editoren und anderen Cmd-Fenster, die sich im Projektverzeichnis befinden.
  • führen Sie npm init aus, um das Paket neu zu starten. Dann fehlen Daten mit der alten, gesicherten Datei package.json
  • starte npm i
  • fest :)

Hoffe das hilft.

0
AirFusion

Ich hatte das gleiche Problem und keine dieser Lösungen hat funktioniert, und ich weiß nicht warum, sie haben in der Vergangenheit für ähnliche Probleme bei mir gearbeitet.

Wie auch immer, um das Problem zu lösen, habe ich das Paket unter Verwendung von node-pre-gyp manuell neu erstellt

cd node_modules/bcrypt
node-pre-gyp rebuild

Und alles hat wie erwartet funktioniert.

Hoffe das hilft

0
wezzy

Sie könnten bcrypt vollständig entfernen und bcryptjs installieren. Es ist ~ 30% langsamer, hat aber keine Abhängigkeiten, also keine Schmerzen bei der Installation.

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

Wir haben es erfolgreich für unsere Anwendungen installiert. Es gab Probleme mit bcrypt, die unter AWS-Instanzen für Node v8.x nicht kompiliert wurden

0
Daniel N.

Keiner von ihnen hat für mich gearbeitet, aber das:

npm install 
npm start
0
Oguz

Es stellte sich heraus, dass mein Problem ein Benutzerfehler war: Stellen Sie sicher, dass die Version des Knotens, den Sie zum Ausführen verwenden, mit der Version übereinstimmt, die Sie zum Ausführen einer npm-Installation oder eines Garns verwenden.

Ich verwende NVM für die Versionierung des Knotens und habe Faden über ein Terminal ausgeführt, aber mein IDE wurde so eingestellt, dass beim Ausführen eine ältere Version des Knotens verwendet wird, und es hat den obigen Fehler ausgelöst. Das Anpassen der Knotenversion meiner IDE in der Ausführungskonfiguration an die Knotenversion hat das Problem behoben.

0
Craig Odell

Ich habe gerade diesen Fehler beim Ausführen von kadence Das installierte "kadence" -Skript prüft zuerst auf nodejs und führt nur dann einen Knoten aus, wenn kein nodejs vorhanden ist. Ich habe die neueste Version des Knotens in meinem Verzeichnis ~/bin verlinkt, aber nodejs führt eine ältere Version aus, die ich vergessen habe zu deinstallieren, aber bis jetzt noch nie Probleme verursacht hat.

Leute mit diesem Problem können also prüfen, ob Knoten und Knoten tatsächlich dieselbe Version des Knotens ausführen ...

0
Bill Burdick

In meinem Fall habe ich nodejs anstelle von node ausgeführt. Da nodejs vom Paketmanager installiert wird:

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

# which nodejs
/usr/bin/nodejs
0

starte npm config set python python2.7 und starte npm install erneut die Party ist an.

0

Diese Fehlermeldung ist beim Ausführen meiner App mit systemd aufgetreten: 

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

Ich habe jedoch eine andere Version für npm install in der Shell verwendet:

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

Wenn dies Ihr Setup ist, können Sie entweder die Knotenversion in der Servicedatei fest codieren oder eine Problemumgehung wie this ausführen. 

0
Keith

Möglicherweise ist die Inkonsistenz der JS-Versionen des Knotens das Problem. Wie in der Dokumentation angegeben . Stellen Sie sicher, dass Sie eine der lts-Versionen verwenden. Z.B. Geben Sie dies in Ihrer Docker-Datei an:

# Pull lts from docker registry
FROM node:8.12.0

# ...
0
kmos.w