Javascript 导出到AppImage时启动捆绑的外部脚本

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应用程序是一个单独的文件,很

我用electron开发了自己的应用程序,在启动外部python脚本时,我遇到了生产构建的问题

当我在dev环境中运行代码时,我会遇到如下情况:

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
将完全不同,因此文件也需要在那里