Помилка Uncaught: Модуль не зареєструвався самостійно


92

Я намагаюся використовувати node-vlc з nw.js (v0.12.0-alpha2). Коли я запускаю свою програму без nw.js, вона працює, але коли я запускаю її за допомогою nw.js, я отримую повідомлення про помилку:

Помилка Uncaught: Модуль не зареєструвався самостійно. ", Джерело: /home/alexis/Bureau/dev/jukebox/node_modules/vlc/node_modules/ffi/node_modules/bindings/bindings.js (84)

Я спробував кілька команд за допомогою nw-gyp, але це мені не допомогло. Я працюю на Ubuntu 14, 64-розрядна версія.


6
Будь ласка, розгляньте можливість позначення відповіді Омара. Це вирішило проблему.
Ionică Bizău

Відповіді:


154

Якщо ви оновили вузол, npm rebuildможливо, виправите це для вас


3
Вам обов’язково слід запустити це без sudo, якщо ви не знаєте, що вам насправді потрібен root-доступ. Вам не потрібен root, якщо ви не маєте справу з глобально встановленими модулями (що, як правило, не рекомендується).
gfxmonk

8
Не працював у мене, але rm -r node_modulesпотім npm install зробив роботу
Spc_555

1
Не лише обмежене оновленням, але також робота у разі перевстановлення npm та node тощо
Кевін

Це насправді не відповідає на питання. В чому проблема? Я отримую цю помилку при завантаженні модуля "usb" від веб-працівника в electronJS. Не уявляючи, що це означає, чи можете ви пояснити, в чому проблема?
PeterT


17

У мене була подібна проблема з іншим продуктом, і моє виправлення було змінити версію вузла, який я використовував. Я використовував 0.12.0і повернувся до 0.10.26.

Особисто я використовую NVM для обробки версії вузла. З встановленою NVM це просто, як запуск

nvm use 0.10.26

Або встановіть версію за замовчуванням на 0.10.26

nvm alias default 0.10.26

Сподіваємось, це вам допоможе - наші проблеми виходили з різних продуктів, але рішення може бути однаковим.


Це виправлення допомогло мені, коли я виконував глобальні пакети, але хотів запускати локальні пакети з новою версією вузла. Просто повинен змінювати версії, коли я запускав глобальні команди.
Коллін Прайс

9

У мене була подібна проблема.

/Users/user/NodeAddons/bridge/node_modules/bindings/bindings.js:83 Помилка: Модуль не зареєструвався самостійно.

У моєму випадку я робив надбудову C / C ++, і я забув експортувати надбудову, у моєму main.cc бракував коду нижче:

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

NODE_MODULE(method, Init);

Сподіваюся, це допомагає іншим! Дякую :)


Радий за вас (Y): D
Aion

3

Одного разу у мене була ця проблема при створенні багатофайлового аддону C ++. У моєму файлі binding.gyp у мене було:

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

І мій проект містив кілька файлів * .cc. Однак макрос NODE_MODULE () викликався лише в одному файлі, який імпортував решту файлів. Але вузол очікує, що він буде викликаний у файлі frist * .cc, перерахованому у джерелах. Тому мені довелося змінити джерела, щоб явно додати цей файл на початок


2

Для мене біг npm updateспрацював


Це може, але лише якщо пакет застарілий. Він також робить щось інше, ніж про що просили. npm rebuildабо rm -rf node_modules && npm iце правильна відповідь.
Альбін,


1

Я додав ту саму проблему, оскільки встановив модулі як sudo ... Видалення папки модулів вузлів та перевстановлення як звичайний користувач це виправило.


1
Ідеально Я змінив право власності на папку за допомогою chown і перевстановив за допомогою npm без sudo. Це спрацювало.
Ашіш

1

Для мене npm rebuildчи npm updateне працював. Мені довелося видалити node_modulesпапку і запустити, npm installщоб встановити їх знову.


0

У мене була та сама проблема. Мій сценарій, який посилався на загальний сценарій посилання, мав недійсне посилання. Я зняв недійсне посилання, і помилка зникла. У моєму повідомленні про помилку не було вказівки на те саме недійсне посилання, що ускладнило налагодження. Але повідомлення "Uncaught Error: Module did not self-register" було повідомленням, яке я отримував.

Це трапляється і в іншому моєму проекті. З якоїсь причини він не розпізнає посилальний шлях, якщо один із символів має великі літери. Навіть думаючи, що верхній регістр - це правильне написання шляху.


-1

я теж стикався з тим самим питанням, і цей працював у мене.

вам потрібно зайти в node_module / і налаштувати ціль nw-gyp, виконавши команду

$ nw-gyp configure --target=0.12.3 

тоді

$ nw-gyp build

і це спрацювало для мене. Якщо ви отримали команду nw-gyp, яку не знайшли, використовуйте

npm install nw-gyp
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.