在Electron中重新编译serialport

在使用Electron框架开发的桌面端应用中,需要使用到串口收发的功能,选择使用serialport进行串口的管理。

serialport的使用一般需要根据所使用的Electron版本重新编译,一般的编译过程是:

npm i --save-dev serialport
npm i --save-dev electron-rebuild
./node_modules/.bin/electron-rebuild
# 在windows下如果上述命令遇到了问题,尝试这个:
.\node_modules\.bin\electron-rebuild.cmd

其中electron-rebuild会根据当前Electron所使用的node.js版本重新编译项目中版本号不同的库,nodejs的版本详见ABIversion.其中可以看到Electron所使用的nodejs版本并不是官方发布的版本

Electron 6.x所使用的nodejs版本

因此如果直接使用会面临着版本冲突的问题,如下:

App threw an error during load
Error: The module 'the/path/to/xxx.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
the module (for instance, using `npm rebuild` or `npm install`).

笔者在实际中试过使用electron-rebuild重新编译serialport时却不成功,不知道什么原因。最终在这里看到了一个编译办法,具体操作是

cd node_modules/@serialport/bindings
node-gyp rebuild --target=6.1.5 --arch=x64 --dist-url=https://electronjs.org/headers

 其中--target=6.1.5是具体所使用的Electron版本,使用时需要安装编译nodejs所需的环境,这个在安装nodejs时会提示安装。编译成功后,在bindings文件夹下的build/Release下,会出现对应版本的bindings.node文件,这个就是我们所需要的二进制文件。以后再使用时就可以直接安装serialport,然后拷贝bindings.node文件到对应的文件夹下即可。

文件下载: NODE_MODULE_VERSION 73(Github链接)

你可能感兴趣的:(Node.js,Electron)