web-dev-qa-db-ja.com

不明なエラー:モジュールは自己登録しませんでした

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でいくつかのコマンドを試してみましたが、助けにはなりませんでした。私はUbuntu 14、64ビット版を使用しています。

79
Alexis Schad

ノードをアップグレードした場合、npm rebuildがこれを修正する可能性があります

142

私にとって:rm -r node_modulesその後npm install

44
Thami Bouchnafa

別の製品でも同様の問題が発生しましたが、使用しているノードのバージョンを変更することで解決しました。 0.12.0を使用していたので、0.10.26に戻しました。

個人的には、ノードのバージョン変更を処理するために NVM を使用します。 NVMをインストールすると、実行するのと同じくらい簡単です

nvm use 0.10.26

または、デフォルトバージョンを0.10.26に設定

nvm alias default 0.10.26

これがお役に立てば幸いです。問題はさまざまな製品にありますが、解決策は同じかもしれません。

13
joel.bowen

同様の問題がありました。

/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);

これが他の人に役立つことを願っています!ありがとう:)

9
Aion

私にとっては、npm updateを実行するとうまくいきました

2
inolasco

0.12とio.js 1.3.0で同じ問題が発生しましたが、Node.js 0.10に戻すと問題が修正されました。

1

私にとってnpm rebuildまたはnpm updateは機能しませんでした。 node_modulesフォルダーを削除し、npm installを実行してそれらを再度インストールする必要がありました。

1
Jesús Carrera

マルチファイルC++アドオンを作成するときに、この問題が発生しました。私のbinding.gypファイルには、次のものがありました。

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

そして、私のプロジェクトにはいくつかの* .ccファイルが含まれていました。ただし、NODE_MODULE()マクロは、残りのファイルをインポートした1つのファイルでのみ呼び出されました。ただし、ノードは、ソースにリストされているfrist * .ccファイルで呼び出されることを想定しています。そのため、ソースを変更して明示的にそのファイルを先頭に追加する必要がありました

1
user1485083

モジュールにSudoとしてインストールしたため、同じ問題を追加しました...ノードモジュールフォルダーを削除し、通常のユーザーとして再インストールすると修正されました。

1
silveur

同じ問題がありました。グローバル参照スクリプトを参照していたスクリプトに無効な参照がありました。私はその無効な参照を外し、エラーはなくなりました。私のエラーメッセージには、デバッグが困難になった特定の無効な参照が示されていませんでした。しかし、「Uncaught Error:Module was not self-register」というメッセージが表示されました。

これは他のプロジェクトでも起こります。何らかの理由で、文字の1つが大文字の場合、参照パスを認識しません。考えても、上部ケーシングはパスの正しいスペルでした。

0
Good4Nothing

私も同じ問題に直面しており、これは私のために働いた。

node_module /に移動し、次のコマンドでnw-gypターゲットを設定する必要があります

$ nw-gyp configure --target=0.12.3 

それから

$ nw-gyp build

そしてこれは私のために働いた。 nw-gypコマンドが見つからない場合は、使用します

npm install nw-gyp
0
mayank