全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-15 5 分钟 ✍️ juanwangdev

Node.js __dirname

__dirname 是 Node.js 的全局变量,返回当前模块文件所在目录的绝对路径。

基本用法

JavaScript
// 假设文件路径为 /home/user/project/app.js
console.log(__dirname);
// 输出: /home/user/project

console.log(__filename);
// 输出: /home/user/project/app.js

与 __filename 的关系

JavaScript
const path = require('path');

// __dirname 是 __filename 的目录部分
console.log(__dirname === path.dirname(__filename)); // true

// 拼接完整文件路径
const filePath = path.join(__dirname, 'data.txt');

常见应用场景

读取同目录文件

JavaScript
const fs = require('fs');
const path = require('path');

// 读取当前目录下的 config.json
const configPath = path.join(__dirname, 'config.json');
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));

设置相对路径

JavaScript
// 使用 __dirname 确保路径始终正确
const logPath = path.join(__dirname, 'logs', 'app.log');
const dataPath = path.join(__dirname, '..', 'data', 'users.json');

注意事项

JavaScript
// __dirname 不是真正的全局变量,而是每个模块的局部变量
// 在模块外部无法访问

// ❌ 错误:使用相对路径可能因执行目录不同而失败
fs.readFileSync('./config.json');

// ✅ 正确:使用 __dirname 确保路径正确
fs.readFileSync(path.join(__dirname, 'config.json'));

__dirname 的值在模块加载时就已确定,不会随 process.cwd() 的变化而改变。

要点总结

  • __dirname 返回当前模块所在目录的绝对路径
  • 使用 path.join(__dirname, ...) 拼接路径确保正确性
  • 不随执行目录改变,与 process.cwd() 不同
  • 每个模块都有自己的 __dirname

📝 发现内容有误?点击此处直接编辑

← 上一篇 Node.js Buffer 缓冲区
下一篇 → Node.js __filename
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库