我有一个问题,让serialport包在渲染器中的Electron Forge + Webpack中工作:
使用电子锻造CLI,我做了一个全新的项目:
npm init electron-app@latest my-new-app -- --template=webpack
然后我安装了最新的serialport包:
npm install serialport
我想在渲染器中使用serialport,所以我将其导入renderer.js:
import { SerialPort } from "serialport";
但是,运行此命令会出现一系列导入错误:
∮我所尝试的∮
- 我尝试将此导入移到preload.js中,但这会导致另一个错误,即没有预构建版本:
错误:未找到平台= win32 arch = x64运行时=电子abi = 110 uv = 1 libc = glibc节点= 16.17.1电子= 22.0.0 webpack = true的本机内部版本
- 尝试使用electron-rebuild来重建串行端口
electron-rebuild -f -w serialport
- 我尝试启用
nodeIntegration: true
这是一个内部开发测试工具,所以如果这是一个解决方案,那么启用通常不建议的东西的安全性对我来说是可以的。
1条答案
按热度按时间ttcibm8c1#
当我在Electron的主进程中导入
serialport
时,我也遇到了No native build was found for platform
错误消息。我使用electron-forge
来构建我的可分发文件。我也尝试手动使用electron-rebuild
,但没有效果。我花了几天时间研究Stack Overflow和GitHub问题,并做了一些实验。最后,看起来这个问题是由
electron-rebuild
在某些平台上没有检测到serialport
的本地节点模块引起的。在我的例子中,electron-rebuild
正在我的M1 MacBook Pro上重建serialport
本地节点模块(arm 64),但没有在Raspberry Pi 4 Model B(armv7 l)上重建这些模块。最后为我解决这个问题的方法(归功于GitHub的评论)是在Electron的打包步骤之前运行以下命令:
这将首先删除您的
node_modules/@serialport
文件夹中的所有内容,该文件夹包含bindings-cpp
包中为几个平台预构建的本机节点模块。接下来,我们从头开始构建serialport
的本机节点模块,以便我们(希望)最终得到一个与当前平台匹配的本机节点模块。确保上面命令中使用的
serialport
版本与您依赖的版本匹配!