模块版本与无头浏览器和桌面节点不匹配

app*_*tix 2 node.js zombie.js phantomjs nw.js electron

当我尝试使用带有桌面Node shell的无头浏览器时,我收到了"模块版本不匹配错误".我用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)
Run Code Online (Sandbox Code Playgroud)

知道导致错误的原因是什么吗?

Tim*_* Gu 6

Node.js内部抛出错误.您正在混合为不同版本的io.js或Node.js构建的二进制模块.模块版本是指C++ NODE_MODULE_VERSION宏,可以在JavaScript中访问process.versions.modules.

14似乎是自Node.js v0.11.11以来Node.js的版本号.

我找不到关于41的任何信息,尽管很明显42是io.js v1.0.0使用的版本号.

更新:41是内部捆绑在atom-shell中的io.js版本,它是从io.js剪切而来的v1.0.0-pre.

nw.js/atom-shell使用自己的Node.js副本来执行引擎.在终端中,尝试执行干净的安装和执行,而无需访问atom-shell.

另请注意,此问题不应仅限于Phantom.js或Zombie.js,而应仅限于使用C++代码的所有模块.

要解决此问题,请使用以下说明之一:

  • atom-shell提供了使用本机模块的教程.
  • nw.js也有一个教程