尝试将无头浏览器与桌面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)
知道导致错误的原因是什么?
该错误是从Node.js内部抛出的。您正在混合为不同版本的io.js或Node.js构建的二进制模块。模块版本引用C ++NODE_MODULE_VERSION
宏,可在JavaScript中以方式访问process.versions.modules
。
自Node.js v0.11.11起,似乎14是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 ++代码的模块。
要解决此问题,请使用以下说明之一:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句