Неперехваченная ошибка: модуль не саморегистрируется


92

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

Неперехваченная ошибка: модуль не саморегистрируется. ", Источник: /home/alexis/Bureau/dev/jukebox/node_modules/vlc/node_modules/ffi/node_modules/bindings/bindings.js (84)

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


6
Пожалуйста, подумайте о том, чтобы отметить ответ Омара. Это решило проблему.
Ionică Bizău

Ответы:


155

Если вы обновили узел, npm rebuildвозможно, это исправят за вас


3
Вам определенно следует запустить это без sudo, если вы не знаете, что вам действительно нужен root-доступ. Вам не понадобится root, если вы не имеете дело с глобально установленными модулями (что обычно не рекомендуется).
gfxmonk

8
Не работает для меня, но rm -r node_modulesпотом npm install сделал работу
Spc_555

1
Не только обновлено, но также работает в случае переустановки npm и node и т. Д.
Кевин

Это не совсем ответ на вопрос. В чем проблема? Я получаю эту ошибку при загрузке модуля usb от веб-работника в electronicJS. Понятия не имею, что это значит, вы можете объяснить, в чем проблема?
PeterT,


18

У меня была аналогичная проблема с другим продуктом, и я решил изменить версию узла, который я использовал. Я использовал 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 () был вызван только для одного файла, который импортировал остальные файлы. Но узел ожидает, что он будет вызван из первого файла * .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

У меня такая же проблема. В моем сценарии, который ссылался на сценарий глобальной ссылки, была недопустимая ссылка. Я удалил эту недействительную ссылку, и ошибка исчезла. В моем сообщении об ошибке не было указаний на эту конкретную недопустимую ссылку, что затрудняло отладку. Но я получал сообщение «Неперехваченная ошибка: модуль не саморегистрировался».

То же самое произошло и в другом моем проекте. По какой-то причине он не распознает путь ссылки, если один из символов является прописным. Даже подумав, верхний регистр был правильным написанием пути.


-1

Я тоже столкнулся с той же проблемой, и этот сработал для меня.

вам нужно войти в node_module / и настроить цель nw-gyp с помощью следующей команды

$ nw-gyp configure --target=0.12.3 

тогда

$ nw-gyp build

и это сработало для меня. Если вы получили команду nw-gyp not found, используйте

npm install nw-gyp
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.