协慌网

登录 贡献 社区

如何使用 Node.js 获取当前脚本的路径?

我如何获得 Node.js 中脚本的路径?

我知道有process.cwd ,但这只是指调用脚本的目录,而不是脚本本身。例如,假设我在/home/kyle/运行以下命令:

node /home/kyle/some/dir/file.js

如果我调用process.cwd() ,我得到/home/kyle/ ,而不是/home/kyle/some/dir/ 。有办法获得该目录吗?

答案

我再次查看了文档后找到了它。我要找的是__filename__dirname模块级变量。

  • __filename是当前模块的文件名。这是当前模块文件的已解析绝对路径。 (例如: /home/kyle/some/dir/file.js
  • __dirname是当前模块的目录名称。 (例如: /home/kyle/some/dir

所以基本上你可以这样做:

fs.readFile(path.resolve(__dirname, 'settings.json'), 'UTF-8', callback);

使用 resolve()而不是与 '/' 或 '\' 连接,否则您将遇到跨平台问题。

注意:__ dirname 是模块或包含脚本的本地路径。如果您正在编写一个需要知道主脚本路径的插件,那么:

require.main.filename

或者,只是获取文件夹名称:

require('path').dirname(require.main.filename)

此命令返回当前目录:

var currentPath = process.cwd();

例如,要使用路径来读取文件:

var fs = require('fs');
fs.readFile(process.cwd() + "\\text.txt", function(err, data)
{
    if(err)
        console.log(err)
    else
        console.log(data.toString());
});