节点模块版本不匹配:预计50

我遇到了这个问题,从全新安装的Node和npm中, serial port软件包将不会加载Hello World Electron软件包中的以下错误:

在这里输入图像描述

我在节点版本6.6.0和NPM版本3.10.7和OS X 10.11.6。

我期待看看我是不是过时了,但看看这个列表 ,我找不到任何有50个模块版本。这是一个错误?

我已经尝试npm rebuild ,以及删除模块和重新安装,但没有骰子。

更新:即使当我运行node -v它打印v6.6.0 ,在Web控制台运行process.versions.node给我v6.5.0 。 这里发生了什么?

这是由serialport模块使用为不同版本的节点构build的本地代码而引起的已知问题 。 如果你有兴趣,你可以在这里阅读更多有关插件的内容。 它们只是用C / C ++编写的模块,可以与Node进行交互,因此模块可以更轻松地与硬件进行交互。

该问题提出的解决scheme是这样的:

 npm rebuild --runtime=electron --target=1.2.5 --disturl=https://atom.io/download/atom-shell --build-from-source 

如果您尚未安装electron-rebuild ,那么可能有助于确保重build过程正常工作:

 npm install --save-dev electron-rebuild 

即使当我运行节点-v打印V6.6.0,在Web控制台运行process.versions.node给我V6.5.0。 这里发生了什么?

Electron使用它自己的版本的节点,没有连接到您的系统节点安装(参见主页查看最新的电子使用的节点版本,或使用process.versions.node ,就像你在问题中所做的那样)。

如果问题的原因,您可以尝试旧版本(也许1.1.0 ,使用Chrome 50?)。

在我的情况下,错误是:

 App threw an error during load Error: Module version mismatch. Expected 50, got 48. at Error (native) at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:173:20) at Object.Module._extensions..node (module.js:583:18) at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:173:20) at Module.load (module.js:473:32) at tryModuleLoad (module.js:432:12) at Function.Module._load (module.js:424:3) at Module.require (module.js:483:17) at require (internal/module.js:20:19) at Object.<anonymous> (/myapp/node_modules/sqlite3/lib/sqlite3.js:4:15) 

重build后错误得到修复:

 npm install --save-dev electron-rebuild npm rebuild --runtime=electron --target=1.4.3 --disturl=https://atom.io/download/atom-shell --build-from-source