我使用browserify将我的应用的所有.js文件合并到dist/main.js
。我的package.json
看起来像是:
"main": "./dist/main.js",
"scripts": {
"start": "electron ./dist/main.js",
},
"bin": {
"electron": "./node_modules/.bin/electron"
}
我可以使用npm run start
正确运行我的应用程序。
但是如果在main.js
我使用app.getAppPath()
,我会得到:
/home/myuser/projects/electronProject/node_modules/electron/dist/resources/default_app.asar
我希望这是
/home/myuser/projects/electronProject/dist/main.js
我误解了这种方法的用法吗?如何获得Electron程序入口点的路径? default_app.asar
的作用是什么?
由于
答案 0 :(得分:1)
它返回当前的应用程序目录:
app.getAppPath()
返回String - 当前应用程序目录。
来自docs。
asar文件是一种简单的归档格式,只是将文件相互附加。我不确定您是如何构建应用程序的,但electron-packager
和electron-builder
等工具会将文件输出到resources/app.asar
存档中并从那里运行文件。这意味着您当前的应用程序目录将是something/resources/app.asar
。从那里您的主文件位于something/resources/app.asar/main.js
。
答案 1 :(得分:0)
为什么不使用__dirname
(node.js)或process.resourcesPath
(电子)?
https://github.com/electron/electron/blob/master/docs/api/process.md https://nodejs.org/docs/latest/api/globals.html#globals_dirname
答案 2 :(得分:0)
谁可能遇到同样的问题...
main
package.json
可能有问题
主要字段指定的脚本是您的启动脚本 应用,它将运行主要流程。
offical websites中的示例代码:
{
"name": "your-app",
"version": "0.1.0",
"main": "main.js",
"scripts": {
"start": "electron ."
}
}
app.getAppPath()输出:
YOUR_PATH_TO / electron-quick-start
如果您将代码段更改为
{
"name": "your-app",
"version": "0.1.0",
"main": "main.js",
"scripts": {
"start": "electron YOUR_PATH_TO/main.js"
}
}
然后将app.getAppPath()输出:
YOUR_PATH_TO / electron-quick-start / node_modules / electron / dist / resources / default_app.asar
因此解决方案是:如果要更改启动脚本,请在 main 字段中进行更改,而不仅仅是在 scritps 字段...