Erro não detectado: o módulo não se autorregistrou

92

Tento usar node-vlc com nw.js (v0.12.0-alpha2). Quando eu inicio meu aplicativo sem o nw.js, ele funciona, mas quando o inicio com o nw.js, ocorre um erro:

Erro não detectado: o módulo não se autorregistrou. ", Fonte: /home/alexis/Bureau/dev/jukebox/node_modules/vlc/node_modules/ffi/node_modules/bindings/bindings.js (84)

Tentei alguns comandos com o nw-gyp, mas não consegui me ajudar. Estou no Ubuntu 14 de 64 bits.

Alexis Schad
fonte
6
Por favor, considere marcar a resposta de Omar. Isso resolveu o problema.
Ionică Bizău

Respostas:

154

Se você atualizou o nó, então npm rebuildpode corrigir isso para você

DiverseAndRemote.com
fonte
3
Definitivamente, você deve executar isso sem o sudo, a menos que saiba que realmente precisa de acesso root. Você não deve precisar de root, a menos que esteja lidando com módulos instalados globalmente (o que geralmente é desencorajado).
gfxmonk
8
Não funcionou para mim, mas rm -r node_modulesentãonpm install fez o trabalho
Spc_555
1
Não se limita apenas ao upgrade, também funciona no caso de reinstalar o npm e o node, etc.
Kevin
Isso realmente não responde à pergunta. Qual é o problema? Recebo este erro ao carregar o módulo 'usb' de um web worker no electronJS. Não tenho ideia do que significa, você pode explicar qual é o problema?
PeterT
49

Para mim: rm -r node_modulesentão npm install

Thami Bouchnafa
fonte
17

Tive um problema semelhante com outro produto e minha correção foi alterar a versão do nó que estava usando. Eu estava usando 0.12.0e mudei de volta para0.10.26 .

Pessoalmente, eu uso o NVM para lidar com a alteração da versão do nó. Com o NVM instalado é tão simples quanto rodar

nvm use 0.10.26

Ou configurando a versão padrão para 0.10.26

nvm alias default 0.10.26

Esperamos que isso ajude você - nossos problemas vieram de produtos diferentes, mas a solução pode ser a mesma.

joel.bowen
fonte
Essa correção me ajudou quando eu estava executando pacotes globais, mas queria executar pacotes locais com uma nova versão de nó. Só preciso trocar de versão quando executei comandos globais.
Collin Price
9

Eu tive um problema semelhante.

/Users/user/NodeAddons/bridge/node_modules/bindings/bindings.js:83 Erro: o módulo não se autorregistrou.

No meu caso, eu estava fazendo um complemento C / C ++ e havia esquecido de exportar o complemento, no meu main.cc estava faltando o código abaixo:

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

NODE_MODULE(method, Init);

Espero que isso ajude outras pessoas! Obrigado :)

Aion
fonte
Fico feliz por você (Y): D
Aion
3

Certa vez, tive esse problema ao criar um addon c ++ de vários arquivos. No meu arquivo binding.gyp eu tinha:

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

E meu projeto continha vários arquivos * .cc. No entanto, a macro NODE_MODULE () foi chamada apenas em um arquivo que importou o resto dos arquivos. Mas o nó espera que ele seja chamado no arquivo frist * .cc listado nas fontes. Então, eu tive que mudar as fontes para adicionar explicitamente esse arquivo ao início

user1485083
fonte
2

Para mim, correr npm updatefuncionou

Inolasco
fonte
Pode, mas apenas se o pacote estiver desatualizado. Ele também faz algo mais do que o solicitado. npm rebuildou rm -rf node_modules && npm ié a resposta correta.
Albin
1

Tive o mesmo problema com o 0.12 e o io.js 1.3.0, e reverter para o Node.js 0.10 corrigiu o problema.

Matthew O'Riordan
fonte
1

Eu adicionei o mesmo problema porque instalei os módulos como sudo ... Remover a pasta de módulos do nó e reinstalar como usuário normal corrigiu.

Silveur
fonte
1
Perfeito. Mudei a propriedade da pasta usando chown e reinstalei com npm sem sudo. Funcionou.
Asheesh de
1

Para mim npm rebuildou npm updatenão funcionou. Tive que remover a node_modulespasta e executar npm installpara instalá-los novamente.

Jesús Carrera
fonte
0

Eu tive o mesmo problema. Meu script que fazia referência a um script de referência global tinha uma referência inválida. Retirei aquela referência inválida e o erro foi embora. Minha mensagem de erro não tinha indicação dessa referência inválida específica, o que tornava mais difícil depurar. Mas 'Erro não detectado: o módulo não se autorregistrou' era a mensagem que recebia.

Isso também aconteceu no meu outro projeto. Por alguma razão, ele não reconheceria o caminho de referência se um dos caracteres estivesse em maiúsculas. Mesmo pensando, a caixa superior era a grafia correta do caminho.

Good4Nothing
fonte
-1

Eu também estava enfrentando o mesmo problema e este funcionou para mim.

você precisa ir no node_module / e configurar o destino nw-gyp seguindo o comando

$ nw-gyp configure --target=0.12.3 

então

$ nw-gyp build

e isso funcionou para mim. Se você receber o comando nw-gyp não encontrado, use

npm install nw-gyp
Mayank
fonte