使用electron项目经常会遇到NODE_MODULE_VERSION的错误,如下:
error:: Error: The module '<project>/node_modules/electron/node_modules/ref/build/Release/binding.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 57. This version of Node.js requires
NODE_MODULE_VERSION 54. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or`npm install`)
解决方法:
npm i electron-rebuild -s
./node_modules/.bin/electron-rebuild
查看Electron版本文档库中,发现有这么一句话:Change the NODE_MODULE_VERSION to 69
问题原因终于找到了,但是怎么解决?问题分析到这种程度,可以得出两种解决方案:
1) 选取Node版本与Electron版本的NODE_MODULE_VERSION一致。(由于没有找到electron各个版本对应的NODE_MODULE_VERSION,这里可以稍后研究一下)
2)依据electron-rebuild的思路,把二者转换成一致。在rebuild的时候,指定一下abi的值不就可以了?查了一下这方面的资料,发现才真能指定abi的值。
cnpm rebuild --runtime=electron --target=4.0.5 --disturl=https://atom.io/download/atom-shell --abi=69
运行成功。同时解决了Node-Serialport串口读取,也能解决Node-ffi读取dll。