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

相关推荐
276695829212 小时前
美团 小程序 mtgsig
python·小程序·node·js·mtgsig1.2·美团小程序·大众点评小程序
熊猫钓鱼>_>2 天前
从零到一:打造“抗造” Electron 录屏神器的故事
前端·javascript·ffmpeg·electron·node·录屏·record
胡斌附体4 天前
linux(ubuntu)拉取源码进行docker容器部署
linux·git·ubuntu·docker·node·nvm
人间春风意8 天前
记:node 环境变量引发的问题
node
xiangxiongfly91515 天前
Koa 使用总结
node·koa
suoh's Blog15 天前
安装node低版本报错:The system cannot find the file specified.
node·nvm·node安装
爱学英语的程序员18 天前
让AI 帮我做了个个人博客(附提示词!)
人工智能·git·vue·github·node·个人博客
276695829224 天前
dy x-tt-session-dtrait 逆向分析
python·node·dy·dy逆向·抖音请求头逆向·session-dtrait·dtrait
xiangxiongfly9151 个月前
Node http
http·node·文件上传·请求·文件下载·响应
aiguangyuan1 个月前
Nest 与 TypeORM Cli 集成
node·后端开发·nest