Node.js __filename
__filename 是 Node.js 的全局变量,返回当前模块文件的绝对路径(包含文件名)。
基本用法
JavaScript
// 假设文件路径为 /home/user/project/app.js
console.log(__filename);
// 输出: /home/user/project/app.js
console.log(__dirname);
// 输出: /home/user/project
路径解析
JavaScript
const path = require('path');
// 获取文件名
console.log(path.basename(__filename)); // app.js
// 获取文件扩展名
console.log(path.extname(__filename)); // .js
// 获取目录名
console.log(path.dirname(__filename)); // /home/user/project
// 解析路径对象
console.log(path.parse(__filename));
// { root: '/', dir: '/home/user/project', base: 'app.js', ext: '.js', name: 'app' }
常见应用场景
获取当前文件信息
JavaScript
const path = require('path');
// 获取不带扩展名的文件名
const moduleName = path.basename(__filename, '.js');
console.log(moduleName); // app
// 获取父目录名
const parentDir = path.basename(path.dirname(__filename));
console.log(parentDir);
日志记录
JavaScript
function log(message) {
const timestamp = new Date().toISOString();
const location = __filename;
console.log(`[${timestamp}] [${location}] ${message}`);
}
条件执行
JavaScript
// 判断是否为入口文件
if (require.main.filename === __filename) {
console.log('此文件被直接运行');
} else {
console.log('此文件被其他模块引用');
}
__filename 与 __dirname 对比
| 变量 | 说明 | 示例值 |
|---|---|---|
| __filename | 当前文件的绝对路径 | /home/user/app.js |
| __dirname | 当前文件所在目录 | /home/user |
__filename 是模块局部变量,只在模块内部可用,不是真正的全局变量。
要点总结
- __filename 返回当前模块文件的绝对路径(含文件名)
- 配合 path 模块可提取文件名、扩展名、目录名
- 用于日志记录、条件判断等场景
- 与 __dirname 配合使用处理文件路径
📝 发现内容有误?点击此处直接编辑