node 项目中 __dirname / __filename 是什么,为什么有时候不能用?

__dirname 是 Node.js 中的一个特殊变量,表示当前执行脚本所在的目录的绝对路径。

__filename 同理,是 Node.js 中的一个特殊变量,表示当前执行脚本的绝对路径,包括文件名。

在 Node.js 中,__dirname / __filename是一个全局变量,可在任何地方使用,用于获取当前模块文件所在的目录路径。它不是由用户定义的,而是由 Node.js 运行时提供的。使用 __dirname/__filename 可以方便地构建文件的绝对路径 / 获取带有绝对路径的文件名,而不受当前工作目录的影响。

为什么有时候不能用 __dirname / __filename?

因为 __dirname 是一个全局变量,而不是一个模块的属性。因此,在 CommonJS 模块中,你可以直接使用 __dirname,但在 ES6 模块中,__dirname__filename 不再被支持,你需要使用 import.meta.url 来获取当前模块的 URL 信息。

如果你的项目中 package.json 中有 "type": "module", 这个字段那么你就不能直接使用 __dirname / __filename 了。

去掉 package.json 里面的"type": "module",就可以正常用了。

相关推荐
qq_420362037 天前
PDF导出服务
前端·pdf·状态模式·node·puppeteer
-D调定义之崽崽1 个月前
【初学】使用 node 编写 MCP Server
typescript·node·mcp
aiguangyuan1 个月前
Node.js 创建 UDP 服务
node·后端开发
aiguangyuan2 个月前
Node.js 高级应用:负载均衡与流量限制
node·后端开发
Json____2 个月前
使用node-Express框架写一个学校宿舍管理系统练习项目-前后端分离
node·express·前后端分离·宿舍管理
aiguangyuan2 个月前
Node.js介绍与安装
node·后端开发
aiguangyuan2 个月前
Node.js中package.json详解
node·后端开发
aiguangyuan2 个月前
Node.js 模块化规范详解
node·后端开发
冲!!3 个月前
使用nvm查看/安装node版本
前端·node.js·node·nvm
牛老师讲GIS3 个月前
node中shapefile字符集判断
字符集·node·shapefile·dbf·dbf文件