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

相关推荐
杰哥的技术杂货铺3 天前
Linux 系统 nvm 管理node无法使用
linux·node·nvm·libstdc++.so.6·libm.so.6
itas1094 天前
Electron获取nodejs和chrome版本信息
javascript·chrome·electron·nodejs·node
ulimpid6 天前
ENV | VUE3 的安装使用并跑通第一个项目(高效实操版)
npm·vue·node
佘小麦11 天前
【nvm管理多版本node】下载安装以及常见问题和解决方案
node·nvm
程序猿看视界15 天前
node nvm 基础用法
node·nvm
杰哥的技术杂货铺22 天前
在 macOS 上管理 Node版本
macos·node·nvm
双普拉斯1 个月前
微信小程序显示后台文章副文本,图片和视频正常显示
前端·微信小程序·node
珍珠是蚌的眼泪1 个月前
Kubernetes
kubernetes·k8s·node·container·pod
站在顶峰看星星2 个月前
powershell 终端 执行 pnpm -v报错
vue·node·react·angular·nvm
码飞_CC2 个月前
2024 年的 Node.js 生态系统
前端·node·生态系统