Javascript 导出到AppImage时启动捆绑的外部脚本
我用electron开发了自己的应用程序,在启动外部python脚本时,我遇到了生产构建的问题 当我在dev环境中运行代码时,我会遇到如下情况:Javascript 导出到AppImage时启动捆绑的外部脚本,javascript,electron,electron-builder,appimage,Javascript,Electron,Electron Builder,Appimage,我用electron开发了自己的应用程序,在启动外部python脚本时,我遇到了生产构建的问题 当我在dev环境中运行代码时,我会遇到如下情况: const out=spawnSync(PYTHON_位置,['-d','-j','-p',路径,tempfile]) 它工作得很好,因为PYTHON\u LOCATION是public/PYTHON.py 但是,当我使用electron builder制作AppImage时,这不起作用,因为显然找不到脚本。AppImage应用程序是一个单独的文件,很
const out=spawnSync(PYTHON_位置,['-d','-j','-p',路径,tempfile])代码>
它工作得很好,因为PYTHON\u LOCATION
是public/PYTHON.py
但是,当我使用electron builder制作AppImage时,这不起作用,因为显然找不到脚本。AppImage应用程序是一个单独的文件,很明显,公共目录并没有随它一起导出
这个问题有解决办法吗
谢谢 执行AppImage时,会在流程环境中设置AppDir
变量,因此您必须检查该变量是否存在并已设置。然后,您可以构建python脚本的正确路径。Electron将大部分内容绑定到一个app.asar
文件中,该文件可能包含您想要的文件。问题是,web上有一两个善意的建议,即需要相对于容器本身查询AppImage文件,不幸的是,这有点误导。事实是,我相信你会发现,这些变化不会起作用:
./PYTHON_LOCATION
/PYTHON_LOCATION
PYTHON_LOCATION
解决方案是,您需要使用\uuu dirname
查找图像的位置。当您运行AppImage时,它最有可能位于类似于此文件夹的位置(当然,当您从IDE运行时,不是):
/tmp/.mount\u您的应用程序名hvtcdi/
因此\uuu dirname
是(假设应用程序是从app/electron/
文件夹构建的:
/tmp/.mount\u您的应用程序名称hvtcdi/resources/app.asar/app/electron
因此,您的解决方案将类似于:
Path.join(\uuu dirname,PYTHON\u LOCATION)
尽管Electron在查看app.asar
文件中的资源,但它对文件系统是透明的,看起来就像一个文件夹。因此,您可以使用普通的文件I/O命令查看其中的内容
请记住,在IDE中,\uuu dirname
将完全不同,因此文件也需要在那里