我如何获得 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 获取当前应用程序文件夹路径。