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.


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


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


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.


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 :)


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


2

Laufen hat npm updatebei mir funktioniert


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.


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.


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.


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.


-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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.