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

相关推荐
aiguangyuan2 天前
Node项目中两个常用的环境变量配置工具
node·后端开发
自律的蜗牛6 天前
Systemd(Linux 系统级守护,最稳定)node
docker·容器·node
我爱学习_zwj8 天前
Node.js:从浏览器到服务器的JS革命
javascript·node
276695829210 天前
闪购商家端 mtgsig
java·python·c#·node·c·mtgsig·mtgsig1.2
a31582380614 天前
Linux部署Python Django工程和Node工程,使用宝塔面板
linux·服务器·python·django·node·strapi·宝塔面板
武子康16 天前
AI研究-133 Java vs Kotlin/Go/Rust/Python/Node:2025 详细对比分析 定位与取舍指南
java·javascript·python·golang·rust·kotlin·node
276695829216 天前
最新 _rand 分析
前端·javascript·数据库·node·rand·231滑块·_rand分析
achi01019 天前
Ubuntu 24.04 LTS 下 Vue 3 开发环境搭建与生产部署完整指南
nginx·node·nvm·vue 3·ubuntu 24·开发环境搭建·国内镜像仓库
猿小猴子1 个月前
Node 的版本管理工具 nvm 介绍
npm·node·nvm
27669582921 个月前
朴朴超市小程序分析
java·python·小程序·node·sign·朴朴超市·sign-v2