web-dev-qa-db-fra.com

Erreur non capturée: le module ne s'est pas auto-enregistré

J'essaie d'utiliser node-vlc avec nw.js (v0.12.0-alpha2). Quand je lance mon application sans nw.js, cela fonctionne, mais quand je le lance avec nw.js, j'ai une erreur:

Erreur non capturée: le module ne s'est pas auto-enregistré. ", Source: /home/alexis/Bureau/dev/jukebox/node_modules/vlc/node_modules/ffi/node_modules/bindings/bindings.js (84)

J'ai essayé quelques commandes avec nw-gyp mais cela ne pouvait pas m'aider ..__ Je suis sur Ubuntu 14, 64-bit.

79
Alexis Schad

Si vous avez mis à niveau un nœud alors npm rebuild pourrait résoudre ce problème

142

Pour moi: rm -r node_modules puis npm install 

43
Thami Bouchnafa

J'ai eu un problème similaire avec un autre produit et mon correctif consistait à changer la version du noeud que j'utilisais. J'utilisais 0.12.0 et je suis redevenu 0.10.26.

Personnellement, j'utilise NVM pour gérer le changement de version de nœud. Avec NVM, c'est aussi simple que d'exécuter

nvm use 0.10.26

Ou définir la version par défaut à 0.10.26

nvm alias default 0.10.26

Espérons que cela vous aide - nos problèmes proviennent de produits différents mais la solution peut être la même.

12
joel.bowen

J'ai eu le même problème. 

/Users/user/NodeAddons/bridge/node_modules/bindings/bindings.js:83 Erreur: le module ne s'est pas auto-enregistré.

Dans mon cas, je faisais un add-on C/C++ et j'avais oublié d'exporter l'add-on, dans mon main.cc manquait le code ci-dessous: 

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

NODE_MODULE(method, Init);

J'espère que cela aide les autres! Merci :)

8
Aion

Pour moi, exécuter npm update a fonctionné

2
inolasco

J'ai eu ce même problème avec 0.12 et io.js 1.3.0, revenir à Node.js 0.10 résolu le problème.

1
Matthew O'Riordan

Pour moi, npm rebuild ou npm update n'a pas fonctionné. J'ai dû supprimer le dossier node_modules et exécuter npm install pour les réinstaller.

1
Jesús Carrera

J'ai déjà eu ce problème lors de la création d'un addon multi-fichiers c ++. Dans mon fichier binding.gyp j'avais:

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

Et mon projet contenait plusieurs fichiers * .cc. Toutefois, la macro NODE_MODULE () n'a été appelée que sur un fichier ayant importé le reste des fichiers. Mais node s'attend à ce qu'il soit appelé dans le fichier frist * .cc indiqué dans les sources. J'ai donc dû changer de source pour ajouter explicitement ce fichier au début

1
user1485083

J'ai ajouté le même problème parce que j'ai installé des modules en tant que Sudo ... La suppression du dossier des modules de noeud et sa réinstallation en tant qu'utilisateur normal l'ont corrigé.

1
silveur

J'ai eu le même problème. Mon script qui faisait référence à un script de référence global avait une référence non valide. J'ai enlevé cette référence invalide et l'erreur a disparu. Mon message d'erreur n'indiquait pas cette référence invalide particulière rendant le débogage plus difficile. Mais «Erreur non capturée: le module ne s'est pas auto-enregistré» était le message que je recevais.

Cela se produit également dans mon autre projet. Pour une raison quelconque, le chemin de référence ne serait pas reconnu si l'un des caractères était en majuscule. Même pensé, la partie supérieure était la bonne orthographe du chemin.

0
Good4Nothing

je faisais également face au même problème et celui-ci a fonctionné pour moi.

vous devez aller dans le module_noeud/et configurer la cible nw-gyp en suivant la commande

$ nw-gyp configure --target=0.12.3 

puis 

$ nw-gyp build

et cela a fonctionné pour moi. Si vous obtenez la commande nw-gyp introuvable, utilisez 

npm install nw-gyp
0
mayank