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

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

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

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

如果我调用process.cwd()/home/kyle/得到/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);
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());
});
__dirname
console.log(__dirname);
// Prints: /Users/mjr
console.log(path.dirname(__filename));
// Prints: /Users/mjr
process.argv[1]
var settings = 
    JSON.parse(
        require('fs').readFileSync(
            require('path').resolve(
                __dirname, 
                'settings.json'),
            'utf8'));
import { fileURLToPath } from 'url';

const __filename = fileURLToPath(import.meta.url);
import { dirname } from 'path';
import { fileURLToPath } from 'url';

const __dirname = dirname(fileURLToPath(import.meta.url));

每个 Node.js 程序在其环境中都有一些全局变量,这些变量表示有关您的进程的一些信息,其中之一就是__dirname

var reporters = require('jasmine-reporters');
var junitReporter = new reporters.JUnitXmlReporter({
  savePath: process.env.INIT_CWD + '/report/e2e/',
  consolidateAll: true,
  captureStdout: true
 });

您可以使用 process.env.PWD 获取当前应用程序文件夹路径。