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

相关推荐
Json____2 天前
基于 Node + Vue3 的选课管理系统:从教务业务到全栈实践
前端·node·毕设·wwwoop.com
Json____3 天前
校园跑腿系统:使用node从零构建一套前后端分离的全栈实践项目
计算机网络·node·管理系统·wwwoop.com
tangyal9 天前
kubernetes(k8s)基础理论与集群部署
kubernetes·k8s·部署·node·理论·pod·集群cluster
北漂燕郊杨哥12 天前
npm 缓存占满 C 盘?三步把它迁到 D 盘(附验证与避坑)
缓存·npm·node
狗凯之家源码网1 个月前
机车圈系统核心功能与实战效果展示
vue·node
特立独行的猫a2 个月前
HarmonyOS鸿蒙PC三方库移植:Node.js 三方库鸿蒙 PC 移植指南
华为·node.js·node·harmonyos·三方库移植·鸿蒙pc
daqinzl3 个月前
Mpegts.js+FFmpeg+WebSocket+Node实时视频流实现方案
websocket·ffmpeg·node·mpegts.js
Joy T3 个月前
【Web3】跨链资金池与消息路由:CCIP 智能合约集成实战与权限收束
git·web3·node·智能合约·hardhat
在线打码4 个月前
Claude Code 内网离线极简部署指南
人工智能·ai·npm·node·claudecode
天若有情6734 个月前
从零搭建局域网手机遥控电脑网页项目,吃透工程化与架构设计思维
服务器·前端·数据库·算法·开源·node·工程化