electron程序,如何理解NODE_MODULE_VERSION?
发布于 作者:苏南大叔 来源:程序如此灵动~在涉及到electron
的第三方程序addon
的时候,经常会出现个rebuild
的概念。而在electron-rebuild .
的时候,就有不小的概率会被提示NODE_MODULE_VERSION
不匹配。这个问题该如何理解呢?注意看措辞,苏南大叔说的是“理解”,并不是解决。因为解决的话,说来话长,苏南大叔还暂时不想说这个话题。
本文测试环境,mac
/electron@6.0.0
/node@12.4.0
。
引子
下面先放个报错截图,本文就是从这个报错中引申出来的。报错内容如下:
Uncaught Error: The module 'addon.node' was compiled against a different Node.js version using
NODE_MODULE_VERSION 69. This version of Node.js requires NODE_MODULE_VERSION 70. Please try re-compiling or re-installing the module (for instance, using `npm rebuild` or `npm install`).
那么,如何理解有点匪夷所思的NODE_MODULE_VERSION
呢?请听苏南大叔讲述本篇内容。
node
对应NODE_MODULE_VERSION
破局的关键线索来自下面的这个页面:
从图中可以看到,每个Node.js
的版本,都有一个NODE_MODULE_VERSION
做对应。而每个NODE_MODULE_VERSION
,都有好几个nodejs
的版本做对应。
根据上述内容,总结一下的话,node.js
和NODE_MODULE_VERSION
的对应关系如下:
当然,还有更低版本的node
(从网页上还可以看到,node.js
有段时间叫做io.js
),苏南大叔就没有放在上表里面了。可以得出的结论是:从nodejs
的5.0
系列开始,大版本号的变化,就意味着NODE_MODULE_VERSION
的变化。
electron
对应NODE_MODULE_VERSION
理解这个electron
对应NODE_MODULE_VERSION
的关系之前,您需要先理解好,您运行的到底是哪个electron
。具体见下面这篇文字:
换算一下
每个electron
都对应着一个node
版本号,而每个node
又对应着一个NODE_MODULE_VERSION
。所以,该如何查看electron
对应的node
版本呢?答案就是打印一下下面的值:
process.versions.node
比如:下面的截图,是electron@6.0.0
下的执行结果。可以看到process.versions.node
的值,和node -v
的值并不一样。
直接获得
当然,还可以直接打印下面的这个值,就可以免去换算的痛苦。
process.versions.modules
可以直观的看到:electron@6.0.0
对应的NODE_MODULE_VERSION
是73
。
列表
要是大家懒得下载测试的话,下面的链接里面,你翻翻也是可以得出一定的结论的。
苏南大叔临时总结的表格如下:
结束语
在electron
开发过程中,addon
的开发(利用)并不是一帆风顺的。对于某个addon
,不同的环境下,可能会得出成功或者失败的完全不同的实验结论。所以,请大家冷静面对rebuild
失败的情况。
更多electron
相关经验文字,请点击苏南大叔的博客:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
我解决了这个问题,但还是谢谢
看图
usb_bindings.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 72. This version of Node.js requires
NODE_MODULE_VERSION 73. Please try re-compiling or re-installing
我找了下node版本里暂时没有NODE_MODULE_VERSION 73的版本,怎么办?
正好遇到
was compiled against a different Node.js version using
NODE_MODULE_VERSION 72. This version of Node.js requires
NODE_MODULE_VERSION 73. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
electron 5.0.5 rebuild ffi跟ref模块时疯狂报错,头大。
6666
知道了,electron-rebuild用的是electron的头文件编译的,不是nodejs的头文件
最新的Node.js 12.10.0的NODE_MODULE_VERSION才是72,electron v6的为什么就73了?岂不是没法用了
遇到了这个问题,看看如何解决
赞
看看能不能解决问题吧 谢谢啦
感谢提供
搞定啦,win下编译node-canvas各种坑
赞
大叔,您好,正好遇到了这个问题,需要用到node-canvas库,MAC没问题,windows下出现canvas.node版本不一致错误
nodejs:12.4.0
electron: 6.0.1
node-canvas:2.5.0
Error: The module 'C:\WorkFile\test\node_modules\canvas\build\Release\canvas.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 73. This version of Node.js requires
NODE_MODULE_VERSION 72. Please try re-compiling or re-installing
没见过帮顶