【问题标题】:Where is Electron's app.getAppPath() pointing to?Electron 的 app.getAppPath() 指向哪里?
【发布时间】:2017-03-23 13:05:02
【问题描述】:

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

谢谢

【问题讨论】:

    标签: electron package.json


    【解决方案1】:

    【讨论】:

    • 实际上问题来自electron-reload 正在使用它,实际上它似乎对我不起作用。我会将您的问题作为 github 问题转发给作者。
    • 只是评论说.. 使用 __dirname 是比 getAppPath() 更有弹性的解决方案。根据您的 package.json,否则您可能会得到意想不到的结果
    【解决方案2】:

    返回当前应用目录:

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

    来自docs

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

    【讨论】:

    • 事实上,我既没有使用electron-packager,也没有使用electron-builder。 Electron 使用不在 .asar 包中的文件启动,这就是为什么我不明白它为什么指向那里的原因。文档说当前应用程序目录,在我看来这很模棱两可。
    • 同样的问题,我正在使用 VSCode。在 launch.json 文件中,"cwd": "${workspaceFolder}" 仍然无法正常工作。你现在解决了吗?
    【解决方案3】:

    谁可能遇到同样的问题... 可能是package.json 中的电子配置字段main 有问题

    主字段指定的脚本是你的启动脚本 应用程序,它将运行主进程。

    来自offical websites的示例代码:

    {
      "name": "your-app",
      "version": "0.1.0",
      "main": "main.js",
      "scripts": {
        "start": "electron ."
      }
    }
    

    app.getAppPath() 输出:

    YOUR_PATH_TO/electron-quick-start

    如果把代码sn-p改成

    {
      "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

    所以解决方法是:如果要更改启动脚本,请在ma​​in字段中更改,而不仅仅是在scritps中更改> 领域...

    【讨论】:

    • 感谢您指出这一点。 __dirname 是要走的路
    猜你喜欢
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    相关资源
    最近更新 更多