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",就可以正常用了。

相关推荐
27669582922 天前
dy x-tt-session-dtrait 逆向分析
python·node·dy·dy逆向·抖音请求头逆向·session-dtrait·dtrait
xiangxiongfly9154 天前
Node http
http·node·文件上传·请求·文件下载·响应
aiguangyuan7 天前
Nest 与 TypeORM Cli 集成
node·后端开发·nest
启扶农10 天前
lecen:一个更好的开源可视化系统搭建项目--介绍、搭建、访问与基本配置--全低代码|所见即所得|利用可视化设计器构建你的应用系统-做一个懂你的人
低代码·vue·node·所见即所得·表单设计·页面可视化·页面设计器
weixin_5316518113 天前
Node.js 流操作
node.js·node·stream
亚林瓜子16 天前
nodejs里面的百分号解码之URLSearchParams
开发语言·javascript·ecmascript·node·url·百分号编码
亚林瓜子16 天前
AWS Lambda 添加NodeJS依赖库层
npm·云计算·nodejs·node·aws·lambda
昔人'18 天前
`corepack` 安装pnpm
前端·pnpm·node·corepack
aiguangyuan25 天前
Node项目中两个常用的环境变量配置工具
node·后端开发
自律的蜗牛1 个月前
Systemd(Linux 系统级守护,最稳定)node
docker·容器·node