【踩坑记录】在Electron项目中安装 serialport 库

610 阅读2分钟

嘿,大家好!今天我要向大家分享一次在Electron项目中安装serialport库的踩坑过程。如果你也正在进行类似的开发,相信我的经历能给你带来一些启示。废话不多说,让我们开始吧!

项目背景

  • 这是我的公司内部项目,采用 Electron + Vue-cli 搭建的桌面客户端,为了实现与外部设备的串口通信,我们需要使用到node-serialport库
  • node-serialport 是一个使 node 可以实现串口通信的原生模块,部分功能是通过 C++ 实现的,安装过程中依赖 node-gyp 编译

安装依赖

首先,我们需要安装一些必要的依赖。请按照以下步骤进行操作:

  • npm install -g node-gyp
  • npm install --global --production windows-build-tools
  • npm config set python python2.7
  • npm 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库时的踩坑记录。希望我的经验对你有所帮助!

参考文章:

Electron+serialport串口开发