节点模块版本不匹配:预计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