Uncaught Error: Moduł nie zarejestrował się samodzielnie


92

Próbuję używać node-vlc z nw.js (v0.12.0-alpha2). Kiedy uruchamiam moją aplikację bez nw.js, działa, ale kiedy uruchamiam ją z nw.js, pojawia się błąd:

Uncaught Error: moduł nie zarejestrował się samodzielnie. ”, Źródło: /home/alexis/Bureau/dev/jukebox/node_modules/vlc/node_modules/ffi/node_modules/bindings/bindings.js (84)

Wypróbowałem kilka poleceń z nw-gyp, ale to mi nie pomogło. Korzystam z Ubuntu 14, 64-bitowego.


6
Proszę rozważyć zaznaczenie odpowiedzi Omara. To rozwiązało problem.
Ionică Bizău

Odpowiedzi:


155

Jeśli zaktualizowałeś węzeł, możesz to npm rebuildnaprawić


3
Zdecydowanie powinieneś uruchomić to bez sudo, chyba że wiesz, że faktycznie potrzebujesz uprawnień roota. Nie powinieneś potrzebować roota, chyba że masz do czynienia z modułami zainstalowanymi globalnie (co jest ogólnie odradzane).
gfxmonk

8
Nie działa dla mnie, ale rm -r node_modulespotem npm install spełnił swoje zadanie
Spc_555

1
Nie ogranicza się tylko do ulepszenia, działa również w przypadku ponownej instalacji npm i węzła itp.
Kevin

To naprawdę nie odpowiada na pytanie. Jaki jest problem? Otrzymuję ten błąd podczas ładowania modułu 'usb' od pracownika sieci w electronJS. Nie mam pojęcia, co to znaczy, czy możesz wyjaśnić, na czym polega problem?
PeterT


18

Miałem podobny problem z innym produktem i moja poprawka polegała na zmianie używanej wersji węzła. Używałem 0.12.0i wróciłem do 0.10.26.

Osobiście używam NVM do obsługi zmiany wersji węzła. Po zainstalowaniu NVM jest to tak proste, jak uruchomienie

nvm use 0.10.26

Lub ustawiając wersję domyślną na 0.10.26

nvm alias default 0.10.26

Mamy nadzieję, że to Ci pomoże - nasze problemy pochodzą z różnych produktów, ale rozwiązanie może być takie samo.


Ta poprawka pomogła mi, gdy wykonywałem pakiety globalne, ale chciałem uruchamiać pakiety lokalne z nową wersją węzła. Po prostu muszę zmienić wersje, gdy uruchomiłem polecenia globalne.
Collin Price

9

Miałem podobny problem.

/Users/user/NodeAddons/bridge/node_modules/bindings/bindings.js:83 Błąd: moduł nie zarejestrował się samodzielnie.

W moim przypadku robiłem dodatek C / C ++ i zapomniałem go wyeksportować, w moim main.cc brakowało kodu poniżej:

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

NODE_MODULE(method, Init);

Mam nadzieję, że to pomoże innym! Dzięki :)


Cieszę się, że (Y): D
Aion

3

Miałem kiedyś ten problem podczas tworzenia wieloplikowego dodatku c ++. W moim pliku binding.gyp miałem:

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

Mój projekt zawierał kilka plików * .cc. Jednak makro NODE_MODULE () zostało wywołane tylko w jednym pliku, który importował pozostałe pliki. Ale oczekuje, że węzeł, który nazywany jest w granicach pierwszego pliku * .cc wymienionych w źródłach. Musiałem więc zmienić źródła, aby jawnie dodać ten plik na początku


2

U mnie bieganie npm updatezadziałało


Może, ale tylko wtedy, gdy pakiet jest nieaktualny. Robi też coś innego, niż jest to wymagane. npm rebuildczy rm -rf node_modules && npm ijest poprawną odpowiedzią.
Albin


1

Dodałem ten sam problem, ponieważ zainstalowałem do modułów jako sudo ... Usunięcie folderu modułów węzła i ponowna instalacja, jak zwykły użytkownik, naprawiło to.


1
Idealny. Zmieniłem własność folderu za pomocą chown i ponownie zainstalowałem z npm bez sudo. Zadziałało.
Asheesh

1

Dla mnie npm rebuildlub npm updatenie działało. Musiałem usunąć node_modulesfolder i npm installponownie je zainstalować.


0

Miałem ten sam problem. Mój skrypt, który odwoływał się do globalnego skryptu odniesienia, miał nieprawidłowe odwołanie. Zdjąłem to nieprawidłowe odniesienie i błąd zniknął. Mój komunikat o błędzie nie zawierał informacji o tym konkretnym nieprawidłowym odwołaniu, co utrudniało debugowanie. Ale komunikat „Uncaught Error: Module nie zarejestrował się samodzielnie” był komunikatem, który otrzymałem.

Dzieje się tak również w moim innym projekcie. Z jakiegoś powodu nie rozpoznałby ścieżki odniesienia, gdyby jeden ze znaków był pisany wielką literą. Nawet pomyśleć, górna obudowa była poprawną pisownią ścieżki.


-1

też miałem ten sam problem i ten działał dla mnie.

musisz przejść do node_module / i skonfigurować cel nw-gyp, wykonując następujące polecenie

$ nw-gyp configure --target=0.12.3 

następnie

$ nw-gyp build

i to działało dla mnie. Jeśli otrzymasz polecenie nie znaleziono nw-gyp, użyj

npm install nw-gyp
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.