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

时间:2016-09-17 13:19:26

标签: node.js electron

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

enter image description here

我使用的是Node版本6.6.0和NPM版本3.10.7以及OS X 10.11.6。

我看看我是不是已经过时,但是看this list,我找不到任何模块版本为50的东西。这是一个错误吗?

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

更新:即使我运行node -v时它打印v6.6.0,在网络控制台中运行process.versions.node也会给我v6.5.0。这是怎么回事?

2 个答案:

答案 0 :(得分:15)

这是known issue,它是由serialport模块使用为不同版本的Node构建的本机代码引起的。如果您有兴趣,可以阅读更多关于插件here的内容;它们只是用C / C ++编写的模块,可以与Node接口,因此模块可以更容易地与硬件连接。

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

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。这是怎么回事?

Electron使用其自身版本的Node未连接到您的系统节点安装(请参阅homepage查看最新Electron使用的Node版本,或使用process.versions.node,就像您所做的那样在问题中)。

您可以尝试旧版本(可能是1.1.0,使用Chrome 50吗?),以防出现问题。

答案 1 :(得分: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