2013-03-23 3 views
44
Platform: Linux 

Als mein node.js Programm läuft bekam ich folgende FehlermeldungModulversion stimmt nicht überein. Erwartete 11, bekam 1

Error: Module version mismatch. Expected 11, got 1. 
+9

Nicht nur für Linux. Das Gleiche passiert unter OSX. 'rm -rf node_modules; npm update' wird behoben. – Meekohi

+0

Stellen Sie sicher, dass der '' 'Knoten -v''' der erwartete ist und dann' '' rm -rf node_modules; npm install''' – obotezat

Antwort

54

Sie könnten den Fehler wie folgt geben:

Error: Module version mismatch. Expected 11, got 1. 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (/home/user/node_modules/xml2json/node_modules/node-expat/lib/node-expat.js:4:13) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 

und dann können Sie den Fehler im Modul oder irgendwo bemerken.

Dies ist, weil Sie Ihren Knoten aktualisiert haben, können Sie das oben gefundene Modul neu erstellen.

Ich revoele meine Frage von neu installieren (entfernen, dann installieren) xml2json.

viel Glück!

+4

Um zu verdeutlichen: 'npm deinstalliere xml2json' gefolgt von erneutem' npm install' sollte es tun. – elimisteve

+4

Ich habe lange damit zu kämpfen und habe festgestellt, dass 'rm -fr node_modules && npm install' es repariert – Maruf

+0

'npm rebuild' und done –

18
Platform: Linux 

Für die Zukunft in node.js v0.10.x (mindestens v0.10.0) Ich habe diese Fehler:

Error: Module version mismatch. Expected 11, got 1. 

Um dies zu beheben, fand ich dieses interesting link und hatte auch etwas Hilfe von Ben Noordhuis. Der folgende Befehl hat mir geholfen, diesen Fehler loszuwerden:

npm update 
+4

vor dem Update, rm -rf node_modules –

+0

'npm update' hat den Trick für mich gemacht. – wachr

11

Dies geschieht normalerweise, wenn Sie ein Paket mit einer Version von Node installieren und dann zu einer anderen Version wechseln. Dies kann passieren, wenn Sie Knoten aktualisieren oder mit nvm zu einer anderen Version wechseln.

Dies kann auch passieren, wenn Sie versuchen, einen Prozess als Root mit einem global installierten Knoten auszuführen, aber einen nvm-verwalteten Knoten innerhalb Ihres eigenen Benutzerkontos ausführen.

Um dies zu beheben, können Sie die Pakete einfach mit der korrekten Version von Node neu installieren. Stellen Sie außerdem sicher, dass Sie die gleiche Version von Node für die verschiedenen Benutzer verwenden.

2

Sie eine Liste der Knoten Modulversionen und deren entsprechenden Knoten Release auf dieser Seite https://nodejs.org/en/download/releases/

NODE_MODULE_VERSION refers to the ABI (application binary interface) version number of Node.js, used to determine which versions of Node.js compiled C++ add-on binaries can be loaded in to without needing to be re-compiled. It used to be stored as hex value in earlier versions, but is now represented as an integer.

2

Eine weitere Sache finden können, um zu versuchen Wenn Sie nvm verwenden, stellen Sie sicher, dass Sie sowohl global als auch in der App dieselbe Version des Knotens ausführen. (. Das ist was für mich gearbeitet):

:/$ node -v 
v6.0.0 

:/var/www/app$ node -v 
v6.2.0 

Wenn sie nicht einverstanden sind

:/$ nvm use 6.2.0 
Now using node v6.2.0 (npm v3.8.9) 

+0

Diese kleine Antwort hier unten half mir, danke. –

0

In meinem Fall ist der Grund für den Fehler war ein C++ - AddOn, das war kompiliert gegen eine andere node.js Version.

Sie müssen also möglicherweise Ihr C++ - AddOn neu kompilieren, damit die Hauptversionen des Addons und der node.js, die Sie ausführen, übereinstimmen.

+1

Welche zusätzlichen Informationen bietet diese Antwort? – Pogrindis

+1

Niemand erwähnte C++ Add-ons noch. Und sie müssen außerhalb von node.js kompiliert werden. Mit welchem ​​Compiler Sie auch arbeiten. –

4

Dieses Problem ist aufgetreten, weil folgendes Szenario: Sie verwenden Node für Beispiel Version 5. Sie fügen einige Bibliotheken in Ihrem Projekt hinzu, erstellen Sie und führen Sie das aus. Alle Ihre Bibliotheken werden unter Knoten Version 5 kompiliert.

Und dann aktualisieren Sie Ihren Knoten zum Beispiel auf Version 6. Und dann führen Sie einige Befehle, die Knoten verwenden, zum Beispiel npm run test. Das Problem ist hier: Sie verwenden eine neuere Knotenversion zum Ausführen von Bibliotheken, die von älteren Knoten kompiliert wurden.

diese zu lösen, ist einfach durch 2 folgende Befehle:

rm -rf node_modules // force remove node_modules directory 
npm install   // install again all libraries. 
0

Ich hatte dieses Problem mit Systemd, aber ich konnte den App node myapp.js laufen.

Es stellt sich heraus, dass der Pfad in ExecStart unterschied sich von dem, den ich von which node erhalten habe. Das in der Servicedatei zu ändern hat es für mich repariert.

source

1

Manchmal tritt das Problem auf die NodeJS Version auch fällig.

Versuchen Sie, die Version npm und nodejs zu aktualisieren. Folgen Sie dieser link, um Ihre Nodejs zu aktualisieren.

Und Ihre npm Gebrauch zu aktualisieren:

sudo npm install npm -g 

hoffe, das hilft!

0

Keine der Antworten funktionierte für mich, also hier ist meine Lösung. Error: Module version mismatch. Expected 48, got 51. at Error (native) at Object.Module._extensions..node (module.js:597:18) Die 48 und 51 entsprechen Versionen mit dem Knoten als auf NodeJS Release-Seite gefunden: https://nodejs.org/en/download/releases/

So installierte ich NVM, einen Knoten Version Manager und schaltete meinen Knoten Version 48 (6.11.x) und lief dann rm -rf node_modules/ und npm install

Mein spezielles Modul, mcrypt, hing von C++ Binärdateien und der Knoten Module Version hat einen direkten Einfluss:

NODE_MODULE_VERSION refers to the ABI (application binary interface) version number of Node.js, used to determine which versions of Node.js compiled C++ add-on binaries can be loaded in to without needing to be re-compiled. It used to be stored as hex value in earlier versions, but is now represented as an integer.

0

Der einfachste Weg, um zu bekommen, wo Sie sein müssen, nachdem Sie Ihre Knoten Version geändert haben, ist:

rm -Rf node_modules/ && yarn && yarn start

ersetzen yarn start mit dem, was der Befehl ist, dass Sie Ihren Server starten müssen.

Verwandte Themen