キャッチされなかったエラー:モジュールは自己登録しませんでした


92

nw.js(v0.12.0-alpha2)でnode-vlcを使用しようとしています。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ビットを使用しています。


6
オマールの答えをマークすることを検討してください。それで問題は解決しました。
IonicăBizău

回答:


154

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


3
rootアクセスが実際に必要であることがわかっている場合を除いて、sudo なしでこれ必ず実行する必要があります。グローバルにインストールされたモジュール(一般的には推奨されません)を扱っているのでなければ、ルートは必要ありません。
gfxmonk 2015

8
私にとってrm -r node_modulesnpm install うまく
いき

1
アップグレードだけでなく、npmやノードを再インストールする場合などにも機能します
Kevin

これは実際には質問の答えにはなりません。何が問題ですか?electronJSのWebワーカーから、モジュール「usb」をロードするときにこのエラーが発生します。それが何を意味するのかわからない、問題が何であるかを説明できますか?
PeterT


17

別の製品でも同様の問題があり、私の修正は使用していたノードのバージョンを変更することでした。使用0.12.0していたのでに戻しました0.10.26

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

nvm use 0.10.26

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

nvm alias default 0.10.26

これがお役に立てば幸いです-私たちの問題はさまざまな製品から生じましたが、解決策は同じかもしれません。


この修正は、グローバルパッケージを実行していて、新しいノードバージョンでローカルパッケージを実行したいときに役立ちました。グローバルコマンドを実行したときにバージョンを切り替える必要があるだけです。
Collin価格

9

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

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

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


よろしくお願いします(Y):D
アイオン2017年

3

マルチファイルのc ++アドオンを作成するときにこの問題が発生しました。私のbinding.gypファイルで:

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

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


2

私にとって、ランニングnpm updateはうまくいった


できますが、パッケージが古い場合のみです。また、要求された以外のことも行います。npm rebuildまたはrm -rf node_modules && npm i正解です。
Albin


1

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


1
完璧です。chownを使用してフォルダーの所有権を変更し、sudoを使用せずにnpmで再インストールしました。出来た。
Asheesh 2017

1

私にとって、npm rebuildまたはnpm update働かなかった。node_modulesフォルダーを削除して実行npm installし、再度インストールする必要がありました。


0

私も同じ問題を抱えていました。グローバル参照スクリプトを参照していた私のスクリプトには、無効な参照が含まれていました。その無効な参照を削除すると、エラーは発生しなくなりました。エラーメッセージには、特定の無効な参照が示されていなかったため、デバッグが困難でした。しかし、「キャッチされていないエラー:モジュールが自己登録しませんでした」というメッセージが表示されました。

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


-1

私も同じ問題に直面していましたが、これは私にとってはうまくいきました。

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

$ nw-gyp configure --target=0.12.3 

その後

$ nw-gyp build

これでうまくいきました。nw-gypコマンドが見つからない場合は、

npm install nw-gyp
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.