Module version mismatch with headless browser and desktop Node

只谈情不闲聊 提交于 2019-12-19 10:09:20

问题


I'm getting a "Module version mismatch error" when I try to use a headless browser with a desktop Node shell. I've tried Zombiejs and Phantomjs with both nw.js and atom-shell; in both cases as soon as the headless browser comes into play the application crashes with a module mismatch error.

Here's the error with Phantomjs and 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)

Any idea what's causing the error?


回答1:


The error is thrown from Node.js internals. You are mixing binary modules built for different versions of io.js or Node.js. The module version refers to the C++ NODE_MODULE_VERSION macro, which is accessible in JavaScript as process.versions.modules.

14 seems to be the version number for Node.js since Node.js v0.11.11.

I can't find any information on 41, although it is clear that 42 is the version number used by io.js v1.0.0.

UPDATE: 41 is the version of io.js bundled in atom-shell internally, which is cut from io.js v1.0.0-pre.

nw.js/atom-shell is using its own copy of Node.js to execute the engine. In a terminal, try doing a clean installation and execution without going to atom-shell.

Also note that this problem should not be exclusive to Phantom.js or Zombie.js, but to all modules using C++ code.

To solve this problem, use one of the following instructions:

  • atom-shell offers a tutorial for using native modules.
  • nw.js also has a tutorial


来源:https://stackoverflow.com/questions/28771245/module-version-mismatch-with-headless-browser-and-desktop-node

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!