Electron: 功能请求:获取应用源代码文件夹路径的API

创建于 2015-05-16  ·  3评论  ·  资料来源: electron/electron

当我做cd myapp/electron app.jsprocess.cwd()的输出是/Users/maxogden/myapp

但是,当我使用electron-packager打包 + 运行我的应用程序时,这意味着我的应用程序现在位于Contents/Resources/app文件夹中,位于发布页面process.cwd()官方Electron.app的修改副本中process.cwd()/

我不确定为什么 Electron 决定在 process.cwd 设置为/下运行我的应用程序,但这就是它的工作原理,如果您在 Atom 的控制台中运行process.cwd() .app 你也会得到/

我的问题是我无法获取应用程序源文件的路径,唯一的方法是在应用程序的主可执行脚本中捕获__dirname的值,但这不是一个好的解决方案像我的模块menubar这样的情况,API 目前是这样的:

var menubar = require('menubar')
var mb = menubar()
mb.on('ready', function ready () {
  console.log('app is ready')
})

但是,在一个应用程序容器包装时,这是行不通的,因为菜单栏的外观为用户index.html使用页面加载process.cwd()这里,但是因为process.cwd()/而不是/Users/maxogden/myapp/Example.app/Contents/Resources/app它找不到 index.html 并且应用程序不会加载。

Node 应用程序一般没有这个问题,因为 process.cwd() 总是可靠的,这个问题是由 process.cwd() 设置为/ (它可能是 Mac OS X 的东西,谁知道)。

为了修复它,我可以要求使用菜单栏的用户传入__dirname ,但这并不理想或用户友好。

我提出了以下解决方案之一来解决此问题:

  • process.cwd()更改为实际的应用程序文件夹
  • app.getPath添加一个返回应用程序文件夹路径的新选项

最有用的评论

查看process.resourcesPath ,这基本上就是您对第二个选项的描述

所有3条评论

查看process.resourcesPath ,这基本上就是您对第二个选项的描述

@paulcbetts ahhhhhh 谢谢,我https://github.com/atom/electron/blob/cd0aa4a956cb7a13cbe0e12029e6156c3e892924/docs/api/process.md#process -object 存在(我没想到process猴子电子

在原子中存在这个问题,其中path.resolve('something')将解析为/something 。 它为我打破了 tslint。 这有助于:

打开 init.coffee(Atom > Preferences > Init Script...)并添加:

process.chdir(atom.project.getPaths()[0])
此页面是否有帮助?
0 / 5 - 0 等级