嘿,大家好!今天我要向大家分享一次在Electron项目中安装serialport库的踩坑过程。如果你也正在进行类似的开发,相信我的经历能给你带来一些启示。废话不多说,让我们开始吧!
项目背景
- 这是我的公司内部项目,采用 Electron + Vue-cli 搭建的桌面客户端,为了实现与外部设备的串口通信,我们需要使用到node-serialport库
- node-serialport 是一个使 node 可以实现串口通信的原生模块,部分功能是通过 C++ 实现的,安装过程中依赖 node-gyp 编译
安装依赖
首先,我们需要安装一些必要的依赖。请按照以下步骤进行操作:
npm install -g node-gypnpm install --global --production windows-build-toolsnpm config set python python2.7npm config set msvs_version 2017
可能遇到的问题
在安装过程中,你可能会遇到一些问题。下面是我在安装过程中遇到的两个问题以及解决方法,希望能对你有所帮助:
- 安装 windows-build-tools 卡顿
- 一开始我以为是网络的问题,更换网络环境后依旧无效,实际上 windows-build-tools 安装的是 vs2017 和 python2.7,我是通过手动安装 vs2017 和 python2.7 跳过了这个问题
- 如果不想手动安装,我在网上查阅到大神提供的解决卡顿方案,可以参考一下
- serialport 安装成功后,运行项目报错
当我安装好serialport库后,运行项目却遇到了错误。错误信息如下所示:
Uncaught Error: The module '\\?\D:\code\ft4\node_modules\@serialport\bindings\build\Release\bindings.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 83. This version of Node.js requires
NODE_MODULE_VERSION 76. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`)
- 错误信息表明是
NODE_MODULE_VERSION版本不同导致运行异常。 - 查阅资料得知
NODE_MODULE_VERSION是一个与Node.js C++插件编译相关的环境变量。它用于标识C++插件(也称为Native Addons)在特定版本的Node.js上进行编译的版本。 - 查阅SerialPort官网的安装指南,得知Electron与Node.js的 application binary interface (ABI) 不相同,需要使用
electron-rebuild重新编译为匹配的版本。 - 安装electron-rebuild为开发依赖:
npm install --save-dev electron-rebuild - 运行electron-rebuild命令:
.\node_modules\.bin\electron-rebuild.cmd
总结
通过这次安装依赖的踩坑过程,我得出了一个重要的结论:遇到问题时,优先查阅官方文档或开发者说明。这些资源通常会给出解决方案或提示。以上就是在Electron项目中安装serialport库时的踩坑记录。希望我的经验对你有所帮助!
参考文章: