理解electron NODE_MODULE_VERSION?

本文转载自:https://newsn.net/

在涉及到electron的第三方程序addon的时候,经常会出现个rebuild的概念。而在electron-rebuild .的时候,就有不小的概率会被提示NODE_MODULE_VERSION不匹配。这个问题该如何理解呢?注意看措辞,苏南大叔说的是“理解”,并不是解决。因为解决的话,说来话长,苏南大叔还暂时不想说这个话题。

electron程序,如何理解NODE_MODULE_VERSION?

本文测试环境,mac/electron/node

引子

下面先放个报错截图,本文就是从这个报错中引申出来的。报错内容如下:

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`).

electron程序,如何理解NODE_MODULE_VERSION?

那么,如何理解有点匪夷所思的NODE_MODULE_VERSION呢?请听苏南大叔讲述本篇内容。

node对应NODE_MODULE_VERSION

破局的关键线索来自下面的这个页面:

electron程序,如何理解NODE_MODULE_VERSION?

从图中可以看到,每个Node.js的版本,都有一个NODE_MODULE_VERSION做对应。而每个NODE_MODULE_VERSION,都有好几个nodejs的版本做对应。

根据上述内容,总结一下的话,node.jsNODE_MODULE_VERSION的对应关系如下:

newsn.net:这里是【评论】可见内容

当然,还有更低版本的node(从网页上还可以看到,node.js有段时间叫做io.js),苏南大叔就没有放在上表里面了。可以得出的结论是:从nodejs5.0系列开始,大版本号的变化,就意味着NODE_MODULE_VERSION的变化。

electron对应NODE_MODULE_VERSION

理解这个electron对应NODE_MODULE_VERSION的关系之前,您需要先理解好,您运行的到底是哪个electron。具体见下面这篇文字:

换算一下

每个electron都对应着一个node版本号,而每个node又对应着一个NODE_MODULE_VERSION。所以,该如何查看electron对应的node版本呢?答案就是打印一下下面的值:

process.versions.node

比如:下面的截图,是[email protected]下的执行结果。可以看到process.versions.node的值,和node -v的值并不一样。

electron程序,如何理解NODE_MODULE_VERSION?

直接获得

当然,还可以直接打印下面的这个值,就可以免去换算的痛苦。

process.versions.modules

可以直观的看到:[email protected]对应的NODE_MODULE_VERSION73

electron程序,如何理解NODE_MODULE_VERSION?

列表

要是大家懒得下载测试的话,下面的链接里面,你翻翻也是可以得出一定的结论的。

结束语

electron开发过程中,addon的开发(利用)并不是一帆风顺的。对于某个addon,不同的环境下,可能会得出成功或者失败的完全不同的实验结论。所以,请大家冷静面对rebuild失败的情况。

以上是 理解electron NODE_MODULE_VERSION? 的全部内容, 来源链接: utcz.com/a/118621.html

回到顶部