You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置package.json为module后__dirname未定义的解决求助

解决方案:ES模块中模拟__dirname

在ES模块(即package.json中type设为"module")环境下,CommonJS里的__dirname、__filename这类内置变量是不存在的,你可以通过以下方式手动实现:

  • 先导入url模块的fileURLToPath,以及path模块的dirname方法
  • 用fileURLToPath(import.meta.url)获取当前模块的绝对路径(对应CommonJS的__filename)
  • 再通过path.dirname()处理该路径,得到当前模块所在目录的绝对路径(也就是你需要的__dirname)

完整代码示例:

import { fileURLToPath } from "url";
import path from "path";

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

console.log(__dirname); // 现在可正常输出当前目录的绝对路径

如果只需要__dirname,也可以简化成一行:

import { fileURLToPath } from "url";
import path from "path";

const __dirname = path.dirname(fileURLToPath(import.meta.url));

内容的提问来源于stack exchange,提问作者Sarala Sewwandi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 19:32:01