与无头浏览器和桌面Node的模块版本不匹配[英] Module version mismatch with headless browser and desktop 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 interntals .您正在混合为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.0.0.0 .

更新:41是 Atom-Shell 内部,从io.js v1.0.0-pre.

切割

nw.js/atom-shell使用其自己的node.js副本来执行引擎.在终端中,尝试执行干净的安装和执行,而无需去原子壳.

还要注意,此问题不应独有phantom.js或Zombie.js,而应使用C ++代码的所有模块.

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

  • atom-shell提供教程用于使用本机模块.
  • nw.js还具有教程

本文地址:https://www.itbaoku.cn/post/1739898.html