__dirname 与 __filename 的区别
(2)__dirname
表示当前执行脚本所在的目录的绝对路径。在编写文件操作相关代码时非常有用,例如:
(3)__filename
表示当前执行脚本的绝对路径,包含文件名。结合 __dirname 可以方便地获取文件相关信息,例如:
来源整理自:vue3js.cn 面试官系列
补充
补充:两者都是 CommonJS 模块中的"全局"变量(实际由模块包装函数注入),只在当前脚本所在的模块作用域内有效。
__dirname:返回当前模块所在目录的绝对路径(不含末尾文件名)。__filename:返回当前模块文件的绝对路径(含文件名)。- 二者在 ESM 模块中不再默认提供,需要通过
import.meta.url+fileURLToPath()自行计算:
// CommonJS
console.log(__dirname); // /Users/me/project/src
console.log(__filename); // /Users/me/project/src/index.js
// ESM(推荐写法)
import { fileURLToPath } from 'node:url'
import { dirname } from 'node:path'
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);



