Electron的app.getAppPath()指向哪里?

时间:2016-11-09 16:30:10

标签: electron package.json

我使用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的作用是什么?

由于

3 个答案:

答案 0 :(得分:1)

它返回当前的应用程序目录:

  

app.getAppPath()
  返回String - 当前应用程序目录。

来自docs

asar文件是一种简单的归档格式,只是将文件相互附加。我不确定您是如何构建应用程序的,但electron-packagerelectron-builder等工具会将文件输出到resources/app.asar存档中并从那里运行文件。这意味着您当前的应用程序目录将是something/resources/app.asar。从那里您的主文件位于something/resources/app.asar/main.js

答案 1 :(得分:0)

答案 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 字段...