You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron中使用serialport模块找不到bindings文件的问题求助

解决Electron中Serialport模块找不到bindings.node的问题

针对你遇到的这个问题,结合报错里的Webpack调用栈信息,我整理了几个针对性的解决方案,都是Electron整合原生Node模块时常用的排障手段:

1. 强制针对Electron版本重建Serialport核心绑定

electron-rebuild有时候会因为自动版本检测不准导致编译不生效,你可以直接指定要重建的核心模块,确保它适配当前Electron的Node版本:

npx electron-rebuild -f -w @serialport/bindings

这里-f是强制覆盖现有编译文件,-w指定只重建@serialport/bindings这个依赖——它是Serialport的核心原生模块,也是报错里找不到的bindings.node的来源。

2. 调整Webpack配置,避免打包原生模块

从报错里的__webpack_require__能看出你用了Webpack打包,而原生模块(比如Serialport的.node文件)不能被Webpack打包,否则会丢失正确的加载路径。你需要在webpack.config.js里把Serialport设为外部依赖:

module.exports = {
  // ... 其他已有配置
  externals: {
    serialport: 'commonjs serialport'
  }
};

这样Webpack会在运行时直接从node_modules加载Serialport,而不是把它打包进bundle里,就能让程序找到正确的bindings文件位置。

3. 确保Electron Builder打包时包含原生模块

如果你用electron-builder打包应用,需要确认.node文件被正确复制到打包后的目录中。在package.json的build字段里添加:

"build": {
  "extraResources": [
    {
      "from": "./node_modules/@serialport/bindings/build/Release/",
      "to": "./node_modules/@serialport/bindings/build/Release/",
      "filter": ["*.node"]
    }
  ]
}

这会强制把编译好的bindings.node文件复制到打包后的对应位置,避免运行时找不到。

4. 清理缓存并重新安装依赖

有时候旧的依赖缓存会导致版本冲突,你可以彻底清理后重新来:

# 删除现有依赖和锁文件
rm -rf node_modules package-lock.json
# 重新安装依赖
npm install
# 再次重建原生模块
npx electron-rebuild

你的报错信息

Uncaught Error: Could not locate the bindings file. Tried: → /home/myusername/my-projects/yuumi-cnc/build/bindings.node → /home/myusername/my-projects/yuumi-cnc/build/Debug/bindings.node → /home/myusername/my-projects/yuumi-cnc/build/Release/bindings.node → /home/myusername/my-projects/yuumi-cnc/out/Debug/bindings.node → /home/myusername/my-projects/yuumi-cnc/Debug/bindings.node → /home/myusername/my-projects/yuumi-cnc/out/Release/bindings.node → /home/myusername/my-projects/yuumi-cnc/Release/bindings.node → /home/myusername/my-projects/yuumi-cnc/build/default/bindings.node → /home/myusername/my-projects/yuumi-cnc/compiled/12.4.0/linux/x64/bindings.node → /home/myusername/my-projects/yuumi-cnc/addon-build/release/install-root/bindings.node → /home/myusername/my-projects/yuumi-cnc/addon-build/debug/install-root/bindings.node → /home/myusername/my-projects/yuumi-cnc/addon-build/default/install-root/bindings.node → /home/myusername/my-projects/yuumi-cnc/lib/binding/node-v73-linux-x64/bindings.node at bindings (bindings.js:126) at Object../node_modules/@serialport/bindings/lib/linux.js (linux.js:1) at webpack_require (bootstrap:726) at fn (bootstrap:100) at Object../node_modules/@serialport/bindings/lib/index.js (index.js:14) at webpack_require (bootstrap:726) at fn (bootstrap:100) at Object../node_modules/serialport/lib/index.js (index.js:2) at webpack_require (bootstrap:726) at fn (bootstrap:100)

内容的提问来源于stack exchange,提问作者Lucian Caetano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:40:05