我正在使用 React 开发一个电子应用程序,我有一个 python 文件,我想通过电子的主进程运行它。
我正在使用 Node js 的
child-process
来生成 python exe(esic.exe) 文件。我使用 pyinstaller 创建了 python exe 文件,它在独立模式下运行良好。
const exeLocation = path.join(__dirname, 'dist/esic.exe')
const process = spawn(exeLocation, [args])
在开发模式下,一切运行正常,电子的主进程可以生成进程并发送参数并接收输出,但是一旦我使用
electron-builder
打包电子应用程序,它就会给我这个ENOENT
代码错误
我搜索了
ENOENT
错误,发现该错误表明文件系统中不存在文件或目录的指定路径,因此我尝试解包具有 app.asar
文件的 Electron 构建。在解压 asar 文件时,我发现它包含 dist 目录,并且其中有一个 esic.exe 文件,这意味着 electro-builder 正确打包了构建。
现在我完全困惑为什么它在开发模式下运行而不是在生产模式下运行。
将exe文件放在app.asar外面,并将spawn的第三个参数设置为{shell: true}