2016-09-17 81 views
11

我有这个问题,即,从节点和NPM的全新安装,serial port包不会在Hello World电子封装以下错误加载:节点模块版本不匹配:预计50

enter image description here

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

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

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

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

回答

15

这是一个known issue这是由serialport模块使用为不同版本的节点构建的本机代码而导致的。如果你有兴趣,你可以阅读更多关于插件here的内容。它们只是用C/C++编写的模块,可以与节点连接,因此模块可以更轻松地与硬件连接。

由该问题提出的解决方案是这样的:

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

如果您尚未安装electron-rebuild,这可能是有帮助的,以确保重建过程中正常工作:

npm install --save-dev electron-rebuild 

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

电子使用其自己的未连接到您的系统节点安装节点的版本(见homepage来查看最新的电子使用节点版本,或者使用process.versions.node,就像你在这个问题所做的那样)。

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

+2

感谢。我将电子版本更改为1.3.1(正确安装的最低版本),然后运行'npm rebuild --runtime = electron --target = 1.3.1 --disturl = https://atom.io/download/atom -shell --build-from-source',它现在都在运行。 – Alfo

+1

谢谢@ Aurora0001!它适用于电子1.4.3,而我的本地节点版本是4.2.1。 – supNate

4

在我的情况下,错误是:

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) 

后重建的错误是固定的:

npm install --save-dev electron-rebuild 

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