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

相关推荐
牛老师讲GIS6 天前
node中shapefile字符集判断
字符集·node·shapefile·dbf·dbf文件
276695829210 天前
东方航空 m端 wasm req res分析
java·python·node·wasm·东方航空·东航·东方航空m端
啊啊啊~~15 天前
新mac电脑软件安装指南(前端开发用)
macos·node·n·oh my zsh·solarized
~央千澈~15 天前
Go、Node.js、Python、PHP、Java五种语言的直播推流RTMP协议技术实施方案和思路-优雅草卓伊凡
java·python·go·node
276695829216 天前
拼多多小程序 anti_content 分析
java·javascript·python·node·拼多多·anti-content·anti_content
276695829222 天前
美团闪购最新版 mtgsig1.2
java·python·node·mtgsig·美团闪购商家端·美团闪购·mtgsig1.1
柯北(jvxiao)24 天前
从崩溃到稳定:前端开发者必学的 Node.js 守护进程实战指南
node·守护进程
梁辰兴1 个月前
企业培训笔记:axios 发送 ajax 请求
前端·笔记·ajax·vue·axios·node
ayuday1 个月前
Volta比nvm智能的新一代node版本管理工具
nodejs·node·volta
梁辰兴1 个月前
企业培训笔记:Vue3前端框架配置
笔记·前端框架·npm·vue·vue3·node