Ich führe eine Knotenanwendung auf dem Terminal aus. Habe kürzlich ein Upgrade auf Node v8.5.0 durchgeführt, erhalte jedoch den folgenden 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?
node.js
npm
version
node-modules
JoeTidee
quelle
quelle
Antworten:
Sie müssen den Modulordner (
bcrypt
) aus demnode_modules
Ordner entfernen und neu installieren. Verwenden Sie dazu die folgenden Befehle:quelle
zmq
Paket, und dasnpm installing
erneute Erstellen oder Löschen hilft nicht weiter. Immer das gleiche Problem.rm -rf node_modules
.npm cache clear
Leeren Sie den npm- Cache: Entfernen Sie package-lock.json oder npm-shrinkwrap.json. Und erst danachnpm i
.npm cache clear
, die anderen Befehle haben es geschafftIch hatte das gleiche Problem und nichts , was hier erwähnt wurde, funktionierte für mich. Folgendes hat bei mir funktioniert:
main.js
Datei benötigen , die von Electron ausgeführt wird. (Dies schien der erste wichtige Teil für mich zu sein)npm i -D electron-rebuild
das hinzufügen Elektron-rebuild Paketnode-modules
Ordner sowie diepackages-lock.json
Datei.npm i
, um alle Module zu installieren../node_modules/.bin/electron-rebuild
(.\node_modules\.bin\electron-rebuild.cmd
für Windows) aus, um alles neu zu erstellenEs ist sehr wichtig ,
./node_modules/.bin/electron-rebuild
direkt danach zu laufen,npm i
da es sonst auf meinem Mac nicht funktioniert hat.Ich hoffe, ich konnte einigen frustrierten Seelen helfen.
quelle
Sie müssen das Paket neu erstellen und npm anweisen, auch die Binärdatei zu aktualisieren . Versuchen:
@robertklep beantwortet eine relative Frage mit diesem Befehl sehen .
Nur die Neuerstellung hat mein Problem nicht gelöst. Dies funktioniert in meiner Anwendung einwandfrei.
Ich hoffe es hilft!
quelle
Einfach ausführen:
npm uninstall bcrypt
Gefolgt von:
npm install bcrypt
(odernpm install
wenn bcrypt in Ihrer package.json- Datei als Abhängigkeit deklariert ist)quelle
Sie können diesen Link sehen
um die Überprüfung Ihres Knotens zu überprüfen. Die Verwendung von NODE_MODULE_VERSION 51 bedeutet, dass Ihre Knotenversion nodejs v7.x ist. NODE_MODULE_VERSION 57 bedeutet, dass Sie Ihren Knoten auf v8.x aktualisieren müssen, sodass Sie Ihren Knoten aktualisieren müssen. Anschließend müssen Sie den
npm rebuild
Befehl run ausführen , um Ihr Projekt neu zu erstellenquelle
11/stable
auf8/stable
mit durchgeführt$ snap refresh node --channel=8/stable
. Danach tat$ npm rebuild
.NODE_MODULE_VERSION 51
bedeutet, dass die.node
Datei mit NODE_MODULE_VERSION 51 gegen eine Knotenversion kompiliert wird. Der Benutzer verwendet eine Knotenversion mit 57, sodass er sie nicht direkt verwenden kann. Der Benutzer sollte die Kompilierung neu erstellen.Höchstwahrscheinlich 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 explizit ausführen
npm rebuild
. Ich habe alle folgenden Schritte ausgeführt, um das Problem für mich zu beheben:quelle
Stellen Sie sicher, dass nur eine Version von NodeJS installiert ist. Probieren Sie diese beiden aus:
Ich habe NodeJS ursprünglich von der Quelle installiert, aber es war die falsche Version und wurde mit auf die neueste Version 'aktualisiert'
nvm
, wodurch keine früheren Versionen entfernt werden und nur die gewünschte Version im/root/.nvm/versions/...
Verzeichnis installiert wird . Alsosudo node
zeigte immer noch auf die vorherige Version, währendnode
auf die neuere Version zeigte.quelle
Ich habe den gleichen Fehler erhalten, aber ich habe versucht, eine Knotenanwendung mit einem Docker-Container auszuführen.
Ich habe das Problem behoben, indem ich eine .dockerignore-Datei hinzugefügt habe, um das Verzeichnis node_modules zu ignorieren und sicherzustellen, dass beim Erstellen des Docker-Images die nativen Pakete für das gewünschte Image (Alpine) erstellt werden, anstatt über die für meinen Host kompilierten node_modules (Debian) zu kopieren. .
quelle
node_modules/
undpackage-lock.json
Es stellte sich heraus, dass mein Problem ein Benutzerfehler war: Stellen Sie sicher, dass die Version des Knotens, den Sie zum Ausführen verwenden, dieselbe ist, die Sie beim Ausführen einer npm-Installation oder eines Garns verwenden.
Ich verwende NVM für die Versionierung des Knotens und habe Garn über ein Terminal ausgeführt, aber meine IDE wurde so eingestellt, dass beim Ausführen eine ältere Version des Knotens verwendet wird, und es wurde der obige Fehler ausgegeben. Das Problem wurde behoben, indem die Version des Knotens meiner IDE in der Ausführungskonfiguration an die Knotenversion angepasst wurde.
quelle
Ich hatte ein ähnliches Problem mit robotjs. Es gab einige veraltete Codes, für die der Knoten v11 erforderlich war, aber ich hatte bereits den Elektronencode auf v12 kompiliert. Also habe ich im Grunde den gleichen Fehler bekommen. Hier funktionierte nichts, da ich im Grunde versuchte, das Elektron und meine anderen Abhängigkeiten von v12 in den Knoten v11 umzuwandeln.
Folgendes habe ich getan (ein Teil davon basiert auf der Antwort von Chitzui, Kredit, wo Kredit fällig ist):
npm init
das Programm aus, um es erneut zu starten, und fehlen Sie dann die Daten mit der alten gesicherten package.jsonnpm i
Hoffe das hilft.
quelle
Installieren Sie für Elektronenmodule die Elektronenwiederherstellung.
Geben Sie dieselbe Version an, die Sie im aktuellen Verzeichnis installiert haben
Möglicherweise haben Sie diese Erfahrung gemacht, bei der ein Standard-Node-Gyp-Build als 64 und ein grundlegender Elektronen-Rebuild als 76 gemeldet wird. Erst wenn Sie -v mit der genauen Version hinzufügen, wird die tatsächliche Version 80 (für 9.0.0-Beta) erreicht. 6)
quelle
Ich habe den Ordner node_modules gelöscht und ausgeführt,
npm install
und meine Anwendung wurde ohne Fehler gestartet.quelle
Ich habe diesen Fehler beim Ausführen meiner App mit systemd erhalten:
Aber ich habe eine andere Version für
npm install
in der Shell verwendet:Wenn dies Ihr Setup ist, können Sie entweder die Knotenversion in der Servicedatei fest codieren oder eine Problemumgehung wie diese befolgen .
quelle
Nachdem ich verschiedene Dinge ausprobiert habe. Das hat funktioniert.
Löschen Sie Ihren Knotenmodulordner und führen Sie ihn aus
quelle
Ich hatte das gleiche Problem mit dem grpc-Modul und in meinem Fall habe ich Elektron verwendet und in der env-Variablen "export npm_config_target = 1.2.3" eine falsche Elektronenversion festgelegt. Dabei wurde das Problem auf die von mir verwendete Elektronenversion behoben mein Ende. Ich hoffe, dies hilft jemandem, der die hier angegebenen env-Variablen festlegt ( https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way ).
quelle
Sie können bcrypt vollständig entfernen und bcryptjs installieren. Es ist ~ 30% langsamer, hat aber keine Abhängigkeiten, so dass es keine Probleme bei der Installation gibt.
Wir haben es erfolgreich für unsere Anwendungen installiert. Wir hatten Probleme damit, dass bcrypt nicht auf AWS-Instanzen für Node v8.x kompiliert wurde
quelle
Möglicherweise verursacht die Inkonsistenz der JS-Versionen des Knotens das Problem. Wie in der Dokumentation angegeben . Stellen Sie sicher, dass Sie eine der lts-Versionen verwenden. Geben Sie dies beispielsweise in Ihrer Docker-Datei an:
quelle
Überprüfen Sie, ob die von Ihnen verwendete Knotenversion möglicherweise nicht mit den erwarteten übereinstimmt.
quelle
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 funktioniert.
Um das Problem zu lösen, habe ich das Paket einfach manuell mit Node-Pre-Gyp neu erstellt
Und alles hat wie erwartet funktioniert.
Hoffe das hilft
quelle
Ich habe gerade diesen Fehler beim Ausführen von kadence erhalten Das installierte "kadence" -Skript sucht zuerst nach nodejs und führt node nur aus, wenn keine nodejs vorhanden sind. Ich habe die neueste Version von node in meinem ~ / bin-Verzeichnis verlinkt, aber nodejs führt eine ältere Version aus, die ich vergessen hatte zu deinstallieren, aber bis jetzt keine Probleme verursacht habe.
Leute mit diesem Problem könnten also prüfen, ob node und nodejs tatsächlich dieselbe Version von node ausführen ...
quelle
In meinem Fall befand ich mich in meinem Büro-Proxy, der einige der Pakete übersprang. Als ich aus meinem Büro-Proxy kam und versuchte,
npm install
es zu tun , funktionierte es. Vielleicht hilft das jemandem.Aber ich habe mehrere Stunden gebraucht, um herauszufinden, dass dies der Grund war.
quelle
In meinem Fall rannte ich
nodejs
stattnode
. Aufgrundnodejs
der Installation durch den Paketmanager:quelle
renne
npm config set python python2.7
und rennenpm install
wieder die Party ist eröffnet.quelle
Sie müssen nur die folgenden Befehle ausführen:
und schlussendlich
Vergessen Sie nicht,
yarn add electron-rebuild
wenn es in Ihren Abhängigkeiten nicht vorhanden ist.quelle
Ich habe diesen Fehler zweimal in einer Elektronen-App festgestellt und es stellte sich heraus, dass das Problem darin bestand, dass einige Module aus dem Hauptprozess und nicht aus dem Renderprozess verwendet werden müssen. Der Fehler trat bei Verwendung von pdf2json und auch Node-Canvas auf. Durch Verschieben des Codes, für den diese Module erforderlich waren, von index.htm (dem Renderprozess) nach main.js (dem Hauptprozess) wurde der Fehler behoben, und die App wurde neu erstellt und lief einwandfrei. Dies wird das Problem nicht in allen Fällen beheben, aber es ist das erste, was Sie überprüfen, ob Sie eine Elektronen-App schreiben und auf diesen Fehler stoßen.
quelle
Hier ist, was für mich funktioniert hat. Ich verwende ein Loop-Back- Knotenmodul mit Electron Js und habe dieses Problem festgestellt. Nachdem ich viele Dinge ausprobiert hatte, funktionierte das Folgende für mich.
Fügen Sie in Ihrer Datei package.json in den Skripten die folgenden Zeilen hinzu:
Führen Sie dann den folgenden Befehl aus
npm run rebuild
quelle