electron-vue打包报No native build was found for platform=win32错误如何解决
解决方案
1. 调整vue.config.js配置
在项目根目录的vue.config.js文件中补充electronBuilder相关配置,明确标注原生模块不需要webpack处理,同时强制打包时包含对应二进制文件:
module.exports = { pluginOptions: { electronBuilder: { // 声明ffi相关原生模块为外部依赖,跳过webpack编译 externals: ['ffi-napi', 'ref-napi', 'ref-struct-napi'], nodeModulesPath: ['./node_modules'], builderOptions: { files: [ "**/*", "!node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme}", "!node_modules/*/{test,__tests__,tests,powered-test,example,examples}", "!node_modules/*.d.ts", // 保留ffi相关依赖的所有文件,包含预编译二进制 "!node_modules/!(@ffi-napi|ref-napi|ref-struct-napi)/**" ], win: { target: "nsis" } } } } }
2. 为electron重新编译原生模块
开发环境运行正常是因为ffi-napi使用的是适配本地Node版本的编译产物,和electron内置的V8版本不兼容,需要使用electron-rebuild重新编译对应版本:
- 安装electron-rebuild开发依赖:
npm install electron-rebuild -D - 在package.json的scripts字段中新增命令:
"rebuild": "electron-rebuild -f -w ffi-napi,ref-napi,ref-struct-napi" - 执行编译命令:
npm run rebuild - 编译完成后再执行打包命令:
npm run electron:build
如果需要打包32位Windows应用,执行rebuild命令时指定架构:
npm run rebuild -- --arch=ia32
3. 验证本地编译环境
如果rebuild过程报错,确认本地已安装Windows平台原生编译所需依赖:
- 安装Visual Studio Build Tools 2019及以上版本,勾选「C++ 桌面开发」组件
- 安装Python 3.7~3.10版本,配置好系统环境变量
4. 锁定ffi相关依赖版本
部分高版本ffi-napi缺失win32平台预编译包,推荐锁定以下版本:
- 卸载现有版本:
npm uninstall ffi-napi ref-napi ref-struct-napi - 安装指定版本:
npm install ffi-napi@4.0.3 ref-napi@3.0.3 ref-struct-napi@1.1.0 -S
兜底处理方案
如果上述操作完成后仍报错,删除项目根目录下的node_modules文件夹、package-lock.json文件,重新依次执行npm install、npm run rebuild、npm run electron:build命令即可。
内容的提问来源于stack exchange,提问作者shuwenkai
相关产品推荐
相关产品推荐

