2

デスクトップ ノード シェルでヘッドレス ブラウザを使用しようとすると、「モジュール バージョンの不一致エラー」が発生します。nw.js と atom-shell の両方で Zombiejs と Phantomjs を試しました。どちらの場合も、ヘッドレス ブラウザが起動するとすぐに、モジュールの不一致エラーでアプリケーションがクラッシュします。

Phantomjs と atom-shell のエラーは次のとおりです。

Uncaught Exception:
Error: Module version mismatch. Expected 41, got 14.
    at Error (native)
    at Object.module.(anonymous function) (ATOM_SHELL_ASAR.js:118:20)
    at Object.module.(anonymous function) [as .node] (ATOM_SHELL_ASAR.js:118:20)
    at Module.load (module.js:370:32)
    at Function.Module._load (module.js:325:12)
    at Module.require (module.js:380:17)
    at require (module.js:399:17)
    at bindings (/Users/Ajay/Projects/atom-shell/node_modules/phantom/node_modules/dnode/node_modules/weak/node_modules/bindings/bindings.js:76:44)
    at Object.<anonymous> (/Users/Ajay/Projects/atom-shell/node_modules/phantom/node_modules/dnode/node_modules/weak/lib/weak.js:7:35)
    at Module._compile (module.js:475:26)

エラーの原因は何ですか?

4

1 に答える 1

6

エラーはNode.js internalsからスローされます。異なるバージョンの io.js または Node.js 用にビルドされたバイナリ モジュールを混在させています。NODE_MODULE_VERSIONモジュール バージョンは、JavaScript で としてアクセスできるC++ マクロを参照しますprocess.versions.modules

14 は、Node.js v0.11.11 以降の Node.js のバージョン番号のようです。

41 に関する情報は見つかりませんが、 42 がio.js v1.0.0で使用されているバージョン番号であることは明らかです。

UPDATE : 41 は、内部でatom-shellv1.0.0-preにバンドルされている io.js のバージョンであり、 io.js から切り取られています。

nw.js/atom-shell は Node.js の独自のコピーを使用してエンジンを実行します。ターミナルで、atom-shell に移動せずにクリーン インストールと実行を試みます。

また、この問題は Phantom.js または Zombie.js だけに限定されるものではなく、C++ コードを使用するすべてのモジュールに限定されるものであることにも注意してください。

この問題を解決するには、次の手順のいずれかを使用します。

于 2015-02-28T06:52:49.263 に答える