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

相关推荐
liuyang___3 天前
日期的数据格式转换
前端·后端·学习·node.js·node
雨笋情缘24 天前
【2025-05-22】centos 离线安装兼容node和npm版本的pm2 和 yarn
linux·npm·centos·node·yarn·pm2
Coding的叶子1 个月前
React Flow 节点属性详解:类型、样式与自定义技巧
react.js·node·节点·fgai·react agent
疏狂难除1 个月前
【Tauri2】036——Sidecar和shell插件 (二)
node·tauri2
James5063 个月前
Ubuntu平台下安装Node相关环境
前端·javascript·vue.js·node·yarn·pm2·nvm
AJ_Styles3 个月前
pnpm 报错 Error: Cannot find matching keyid 解决
pnpm·node·corepack
你脸上有BUG3 个月前
解决npm在vscode终端内无法运行
vscode·npm·node
菜鸡一枚5553 个月前
关于node的管理工具的区分记录
node.js·node
echo_lovely4 个月前
pnpm 安装和使用
node
Stara05114 个月前
AI客服-接入deepseek大模型到微信(本地部署deepseek集成微信自动收发消息)
微信·node·ollama·deepseek