electron+sqlite3+serialport实现桌面端应用

最近在写一个elrctron的桌面端应用,由于里面用到了串口通信,主要就使用了SerialPort、sqlite3两个依赖,魔幻的问题来了

img

只要用了SerialPort就会报错,去掉这行代码项目就能正常运行

img

npx electron-rebuild的时候他又会报这个问题

img

然后去网上找解决办法,结果都是让我去配置文件里面添加各种loader,当然是没有解决,经历了修改electron版本,python和c++环境一系列操作之后我实在没有解决办法了,想问下有没有朋友碰到过类似的问题可以解答一下

lectron + sqlite3 + serialport 可以实现一个桌面端应用,具体步骤如下:

  1. 初始化项目
    使用 electron-forge 或 electron-builder 初始化项目
    bash
    npm install -g electron-forge
    electron-forge init my-app
  2. 安装依赖
    bash
    npm install sqlite3 serialport
    sqlite3 用于数据库操作
    serialport 用于串口通信
  3. 主进程 - 数据库连接和串口实例
    在主进程中创建数据库连接和监听串口数据
js
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('./db.sqlite');

const SerialPort = require('serialport');
const port = new SerialPort('/dev/tty-usbserial1');
port.on('data', data => {
  // 收到串口数据
});

  1. 渲染进程 - 实现UI
    使用 Electron API 在渲染进程实现UI
  • 菜单、工具栏
  • DOM元素
  • IPC 与主进程通信
js
const { ipcRenderer } = require('electron')

let input = document.querySelector('input') 
input.addEventListener('keyup', () => {
  ipcRenderer.send('input-change', input.value)
})

ipcRenderer.on('port-data', (event, data) => {
  // 收到主进程推送的串口数据,更新UI
}) 

  1. 主进程接收渲染进程消息,执行对应方法
js
ipcMain.on('input-change', (event, inputValue) => {
  // 对数据库或串口操作  
})

  1. 打包和发布
    使用 electron-forge 或 electron-builder 打包你的应用,生成安装文件,供用户下载安装。
    bash
    electron-forge make

该方法可以打包出 Windows (.exe), macOS (.dmg/.pkg) 和 Linux (.deb/.rpm) 安装文件。