请教一下各位大佬一个 electron 问题: 在 mac 上打包 electron(使用 electron-vite + react + python),其中将后端 python api 服务打包为 main.dist 文件(里面包含 main.bin )
开发环境: 一切都正常,main.bin 文件正常启动;
打包并安装到 mac 后:
不知道是什么问题,问 AI 改了好多遍还是这样,请教下大家帮忙看下,谢谢了。
下面是 main 下的该部分代码:
let pythonBinPath: string;
if (app.isPackaged) {
// 打包后的路径
pythonBinPath = join(process.resourcesPath,'main.dist', 'main.bin');
} else {
// 开发模式下的路径
pythonBinPath = join(app.getAppPath(), 'resources/main.dist', 'main.bin');
}
console.log('Python binary path:', pythonBinPath);
// 尝试设置 Python 可执行文件的权限
try {
chmodSync(pythonBinPath, '755');
} catch (error) {
console.error(`设置 Python 可执行文件权限失败: ${error}`);
dialog.showErrorBox('权限错误', `设置 Python 可执行文件权限失败: ${error}`);
return;
}
// 启动 Python 进程
pythonProcess = spawn(pythonBinPath);
1
jeesk 143 天前
报错什么呢? 报错有搞出来呀。
|
2
yeeli 143 天前
在打包的时候需要将 main.dist 拷贝 resources 目录下, 你可以右键查看打包好的 app 文件下的 resources 目录里是否有这个文件
|
4
axina OP @yeeli
嗯嗯有的,这是 build 的配置: extraResources: - from: resources/main.dist to: ./main.dist filter: - "**/*" 安装完这个文件在终端可以用./main.bin 的方式运行,但打开 app 就没反应;开发环境打开 app 时 bin 就运行没问题... |
7
musi 143 天前 via iPhone
在终端里进入到应用的 macOS 文件夹,然后执行你应用的可执行文件,可以看到 log
|
11
axina OP @yeeli #10 看了下,没有的,我在 main 里面也对 main.dist 下的所有文件都这样处理了:chmodSync(filePath, '755') 现在还是一样一调用接口 bin 的进程就结束了,我在试着把 python 打个日志看一下,不然就实在没辙了...
|
12
axina OP @yeeli #5 非常感谢大佬,确实是权限的问题,把 Electron 和 Python 打包软件(nuitka)里的权限改成这几个就没问题了:
- NSDesktopFolderUsageDescription: An application requests access to the user's Desktop folder. - NSDocumentsFolderUsageDescription: An application requests access to the user's Documents folder. - NSDownloadsFolderUsageDescription: An application requests access to the user's Downloads folder. - NSNetworkVolumesUsageDescription: An application requests access to files on a network volume. - NSRemovableVolumesUsageDescription: An application requests access to files on a removable volume. 参考: https://github.com/Nuitka/Nuitka/issues/1605 第一个 Electron 软件属实是跑通了,非常感谢 |