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.


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ê


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


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.


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


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


2

Para mim, correr npm updatefuncionou


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.


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.


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.


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.


-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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.