8

在 node-webkit 中,有没有办法找到当前应用程序的路径?在 node.js 中,您可以使用__dirname查找当前应用程序的路径,但在 node-webkit 中,该变量__dirname似乎未定义。

以下 node.js 脚本正确打印文件路径:

console.log(__dirname)

以下 node-webkit 脚本未正确打印文件路径:

<script type = "text/javascript">
    alert(__dirname);
</script>

在 node-webkit 中找到当前应用程序路径的正确方法是什么?

4

6 回答 6

7

接受的答案的链接不再可用,所以这里是一个简短的答案:

每次运行时,nw.js 都会将应用程序的内容提取到临时目录。

如果要访问 nw.js 提取应用程序的路径,请使用process.cwd()

在其他原因中,如果您想访问可执行应用程序的路径,请使用:

var path = require('path');
var nwDir = path.dirname(process.execPath);
于 2015-03-20T15:25:09.630 回答
5

此处讨论了此问题的答案:https ://groups.google.com/d/topic/node-webkit/IwGzluFC9iU/discussion

在 Windows 上,使用“process.execPath”查看启动它的可执行文件的路径。然后从那里开始工作,从路径中删除可执行文件的文件名以获取文件夹的路径(假设您的应用程序的 .nw 是相对于可执行文件或与之组合的)。

无论是使用压缩的“app.nw”还是“nw.exe”和“app.nw”组合成一个可执行文件(app.exe),这对我都有效。

于 2012-12-10T01:58:09.917 回答
2

如果您正在寻找 App 源的路径(即包含 的文件夹package.json),那么您可以使用process.cwd().

无论启动节点可执行文件时环境的真正工作目录是什么,它都会设置process.cwd()为 App 源的位置。如果应用程序包含在存档中,cwd 将指向提取源的临时文件夹。

重要的是,请注意process.cwd()在应用程序运行期间process.chdir(newPath)可能会被其他事件更改,因此您可能希望在应用程序启动时存储初始值。

编辑: 为了澄清,process.cwd()设置为包含package.json正在运行的应用程序使用的实际文件的文件夹。因此,如果您已将应用程序打包为存档或可执行文件(zip、exe、nwz、nw 等),则 nw.exe 将在运行应用程序之前将项目文件解压缩到临时目录。因此process.cwd()将指向该临时文件夹,而不是原始存档或可执行文件的位置。

于 2015-02-27T20:19:25.973 回答
1

这应该工作:

var nw = require('nw.gui'); //This line is only required for NW.js 0.12.x and below

console.log(nw.__dirname)
于 2016-09-20T08:01:23.437 回答
0

如果您加载了外部 uri,window.location 将不起作用,但无论如何,以下内容似乎都是可靠的:

var path = require('path');
,appPath = path.dirname(require.main.filename)
于 2014-10-18T07:55:14.803 回答
0

不确定何时添加,但我相信现在获得启动路径的官方方法是:

nw.App.startPath
于 2020-07-21T20:57:24.417 回答