因为项目的要求,须要用到Electron+Node。Electron确实有不少坑,刚接触的时候,遇到了各类各样的问题,不过最终都一一解决了。node
一些常见的问题,网上都有相应的资料,这里就不介绍了。python
首先看一张图,介绍Electron、Node使用不一样的Chrome内核:c++
因为chrome内核不一样,须要编译成一致的,才能让node程序运行在Electron上,而网上推荐的最经常使用的编译工具为electron-rebuild,在使用Node-Serialport读取本机串口的时,使用"./node_modules/.bin/electron-rebuild.cmd"编译以后,就能解决问题。chrome
可是在使用node-ffi读取dll时,遇到了如下的问题,本篇文章将围绕这个问题探讨如下解决方案:shell
NODE_MODULE_VERSION指的是Node.js的ABI(application binary interface)版本号,用来肯定编译Node.js的C++库版本,以肯定是否能够直接加载而不需从新编译。在早期版本中其做为一位十六进制来储存,而如今表示为一个整数。npm
查看Electron版本文档库中,发现有这么一句话:Change the NODE_MODULE_VERSION to 69json
问题缘由终于找到了,可是怎么解决?问题分析到这种程度,能够得出两种解决方案:app
1) 选取Node版本与Electron版本的NODE_MODULE_VERSION一致。(因为没有找到electron各个版本对应的NODE_MODULE_VERSION,这里能够稍后研究一下)python2.7
2)依据electron-rebuild的思路,把两者转换成一致。在rebuild的时候,指定一下abi的值不就能够了?查了一下这方面的资料,发现才真能指定abi的值。electron
"rebuild": "cnpm rebuild --runtime=electron --target=4.0.5 --disturl=https://atom.io/download/atom-shell --abi=69"
运行成功。同时解决了Node-Serialport串口读取,也能解决Node-ffi读取dll。
像须要python2.7x、vc++、.net framework2.0等的配置就不啰嗦了,查一下资料便可,最后附带一张package.json配置以及都须要全局安装哪些库:
新手入门,会遇到各类各样的问题,但最终总有解决的办法。