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

相关推荐
袭烽9 天前
基于windows环境使用nvm安装多版本nodejs
vue·nodejs·node·nvm·node版本管理
Json____12 天前
前端node环境安装:nvm安装详细教程(安装nvm、node、npm、cnpm、yarn及环境变量配置)
前端·windows·npm·node.js·node·nvm·cnpm
代码对我眨眼睛20 天前
`pnpm` 不是内部或外部命令,也不是可运行的程序或批处理文件(问题已解决,2024/12/3
node.js·nodejs·node·配置问题
程楠楠&M21 天前
koa中间件
前端·中间件·node.js·node·koa
redwingz23 天前
VPP多架构处理器支持
node·multiarch
mixboot1 个月前
macOS安装nvm node
macos·node·nvm
水w1 个月前
Node.js windows版本 下载和安装(详细步骤)
开发语言·前端·windows·npm·node
getaxiosluo1 个月前
node对接ChatGpt的流式输出的配置
人工智能·ai·chatgpt·状态模式·node·数据流
程楠楠&M1 个月前
mongoDB的安装及使用
前端·数据库·mongodb·node
fukaiit1 个月前
vue项目npm run serve出现【- Network: unavailable】(从排查到放弃)
npm·vue·node·win11