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.