如何在Node.js中获取脚本的路径?
我知道有流程。Cwd,但它只引用调用脚本的目录,而不是脚本本身。例如,假设我在/home/kyle/目录下,然后运行以下命令:
node /home/kyle/some/dir/file.js
如果我调用process.cwd(),我会得到/home/kyle/,而不是/home/kyle/some/dir/。有办法得到那个目录吗?
如何在Node.js中获取脚本的路径?
我知道有流程。Cwd,但它只引用调用脚本的目录,而不是脚本本身。例如,假设我在/home/kyle/目录下,然后运行以下命令:
node /home/kyle/some/dir/file.js
如果我调用process.cwd(),我会得到/home/kyle/,而不是/home/kyle/some/dir/。有办法得到那个目录吗?
当前回答
使用__dirname ! !
__dirname
当前模块的目录名。这与__filename的path.dirname()相同。
例如:在/Users/mjr中运行node Example .js
console.log(__dirname);
// Prints: /Users/mjr
console.log(path.dirname(__filename));
// Prints: /Users/mjr
https://nodejs.org/api/modules.html#modules_dirname
对于esmodule,你会想要使用: import.meta.url
其他回答
你可以使用process.env.PWD来获取当前应用程序的文件夹路径。
基本上你可以这样做:
fs.readFile(path.resolve(__dirname, 'settings.json'), 'UTF-8', callback);
使用resolve()而不是连接'/'或'\',否则您将遇到跨平台问题。
注意:__dirname是模块或包含脚本的本地路径。如果你正在编写一个插件,需要知道主脚本的路径,它是:
require.main.filename
或者,获取文件夹名称:
require('path').dirname(require.main.filename)
当涉及到主脚本时,它非常简单:
process.argv[1]
来自Node.js文档:
process.argv 包含命令行参数的数组。第一个元素是“node”,第二个元素是JavaScript文件的路径。下一个元素将是任何额外的命令行参数。
如果你需要知道模块文件的路径,那么使用__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());
});
每个Node.js程序在其环境中都有一些全局变量,这些变量表示关于进程的一些信息,其中一个是__dirname。