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

相关推荐
Joy T4 天前
【Web3】深度解析 NFT 跨链智能合约开发:原生资产与衍生包装合约架构实战
git·架构·web3·区块链·node·智能合约·hardhat
Joy T13 天前
【Web3】告别Remix:基于Hardhat的智能合约工程化构建与实战
git·web3·node·智能合约·hardhat
风清云淡_A15 天前
【NODE】docker部署后端java项目实战基础版
docker·node
风清云淡_A18 天前
【NODE】vite项目的前后端手动部署流程
node
坐吃山猪19 天前
NodeJS极简后端服务
node·express
Jane-lan19 天前
NVM安装以及可能的坑
前端·node·nvm
风清云淡_A20 天前
【NODE】Linux centos上安装nodejs方法教程
node
蜡台24 天前
Node 版本管理器NVM 安装配置和使用
前端·javascript·vue.js·node·nvm
刘一说1 个月前
告别“版本漂移”:彻底解决 macOS 上 NVM 默认 Node 版本失效的难题
macos·node·nvm
蜡台1 个月前
Node Vue 项目开发常见问题解决
前端·javascript·vue.js·git·node