Nicht erfasster Fehler: Das Modul hat sich nicht selbst registriert

90

Ich versuche, node-vlc mit nw.js (v0.12.0-alpha2) zu verwenden. Wenn ich meine App ohne nw.js starte, funktioniert sie, aber wenn ich sie mit nw.js starte, wird eine Fehlermeldung angezeigt:

Nicht erfasster Fehler: Modul hat sich nicht selbst registriert. ", Quelle: /home/alexis/Bureau/dev/jukebox/node_modules/vlc/node_modules/ffi/node_modules/bindings/bindings.js (84)

Ich habe einige Befehle mit nw-gyp ausprobiert, aber es konnte mir nicht helfen. Ich bin auf Ubuntu 14, 64-Bit.

Alexis Schad
quelle
6
Bitte erwägen Sie, Omars Antwort zu markieren. Das hat das Problem gelöst.
Ionică Bizău

Antworten:

154

Wenn Sie den Knoten aktualisiert haben, kann dies npm rebuildmöglicherweise für Sie behoben werden

DiverseAndRemote.com
quelle
3
Sie sollten dies auf jeden Fall ohne sudo ausführen, es sei denn, Sie wissen, dass Sie tatsächlich Root-Zugriff benötigen. Sie sollten root nicht benötigen, es sei denn, Sie haben es mit global installierten Modulen zu tun (was im Allgemeinen nicht empfohlen wird).
Gfxmonk
8
Hat nicht für mich gearbeitet, aber rm -r node_modulesdann npm install den Job gemacht
Spc_555
1
Nicht nur auf ein Upgrade beschränkt, sondern auch bei der Neuinstallation von npm und node usw.
Kevin
Dies beantwortet die Frage nicht wirklich. Was ist das Problem? Ich erhalte dieses Fehlerlademodul 'usb' von einem Web-Worker in elektronJS. Keine Ahnung, was es bedeutet, können Sie erklären, wo das Problem liegt?
Alanwaring
48

Für mich: rm -r node_modulesdann npm install

Thami Bouchnafa
quelle
16

Ich hatte ein ähnliches Problem mit einem anderen Produkt und mein Fix bestand darin, die Version des von mir verwendeten Knotens zu ändern. Ich benutzte 0.12.0und wechselte zurück zu 0.10.26.

Persönlich verwende ich NVM , um die Änderung der Knotenversion zu handhaben. Mit installiertem NVM ist es so einfach wie das Ausführen

nvm use 0.10.26

Oder setzen Sie die Standardversion auf 0.10.26

nvm alias default 0.10.26

Hoffentlich hilft Ihnen das weiter - unsere Probleme kamen von verschiedenen Produkten, aber die Lösung kann dieselbe sein.

joel.bowen
quelle
Dieser Fix hat mir geholfen, als ich globale Pakete ausführte, aber lokale Pakete mit einer neuen Knotenversion ausführen wollte. Muss nur die Version wechseln, wenn ich globale Befehle ausgeführt habe.
Collin Price
9

Ich hatte ein ähnliches Problem.

/Users/user/NodeAddons/bridge/node_modules/bindings/bindings.js:83 Fehler: Das Modul hat sich nicht selbst registriert.

In meinem Fall habe ich ein C / C ++ - Add-On ausgeführt und vergessen, das Add-On zu exportieren. In meiner main.cc fehlte der folgende Code:

void Init(v8::Handle<v8::Object> exports) {
  NODE_SET_METHOD(exports, "method", method);
}

NODE_MODULE(method, Init);

Hoffe das hilft anderen! Vielen Dank :)

Aion
quelle
Freut mich für Sie (Y): D
Aion
3

Ich hatte einmal dieses Problem beim Erstellen eines C ++ - Addons mit mehreren Dateien. In meiner Binding.gyp-Datei hatte ich:

"sources": ["src/*.cc", "src/*.h" ]

Und mein Projekt enthielt mehrere * .cc-Dateien. Das Makro NODE_MODULE () wurde jedoch nur für eine Datei aufgerufen, die den Rest der Dateien importierte. Der Knoten erwartet jedoch, dass er für die in den Quellen aufgeführte Datei frist * .cc aufgerufen wird . Also musste ich die Quellen ändern, um diese Datei explizit am Anfang hinzuzufügen

user1485083
quelle
2

Laufen hat npm updatebei mir funktioniert

inolasco
quelle
Dies ist möglich, jedoch nur, wenn das Paket veraltet ist. Es macht auch etwas anderes als verlangt. npm rebuildoder rm -rf node_modules && npm iist die richtige Antwort.
Albin
1

Ich hatte das gleiche Problem mit 0.12 und io.js 1.3.0. Durch Zurücksetzen auf Node.js 0.10 wurde das Problem behoben.

Matthew O'Riordan
quelle
1

Ich habe das gleiche Problem hinzugefügt, weil ich als sudo auf Modulen installiert habe ... Durch Entfernen des Ordners für Knotenmodule und erneutes Installieren als normaler Benutzer wurde das Problem behoben.

silveur
quelle
1
Perfekt. Ich habe den Besitz des Ordners mit chown geändert und mit npm ohne sudo neu installiert. Es funktionierte.
Asheesh
1

Für mich npm rebuildoder npm updatehat nicht funktioniert. Ich musste den node_modulesOrdner entfernen und ausführen npm install, um sie erneut zu installieren.

Jesús Carrera
quelle
0

Ich hatte das gleiche Problem. Mein Skript, das auf ein globales Referenzskript verweist, hat eine ungültige Referenz. Ich habe diese ungültige Referenz entfernt und der Fehler war verschwunden. Meine Fehlermeldung enthielt keinen Hinweis auf diese bestimmte ungültige Referenz, was das Debuggen erschwerte. Aber 'Ungefangener Fehler: Modul hat sich nicht selbst registriert' war die Nachricht, die ich erhielt.

Dies passiert auch in meinem anderen Projekt. Aus irgendeinem Grund wird der Referenzpfad nicht erkannt, wenn eines der Zeichen in Großbuchstaben geschrieben ist. Selbst wenn man bedenkt, dass das obere Gehäuse die korrekte Schreibweise des Pfades war.

Good4Nothing
quelle
-1

Ich war auch mit dem gleichen Problem konfrontiert und dieses hat für mich funktioniert.

Sie müssen in das node_module / gehen und das nw-gyp-Ziel mit dem folgenden Befehl konfigurieren

$ nw-gyp configure --target=0.12.3 

dann

$ nw-gyp build

und das hat bei mir funktioniert. Wenn der Befehl nw-gyp nicht gefunden wird, verwenden Sie

npm install nw-gyp
Mayank
quelle