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

Typescript编译正常但ts-node-dev运行fs-xattr报ERR_REQUIRE_ESM如何解决

问题解决方法

核心原因

fs-xattr@0.4.0 是纯ESM规范的包,tsc 编译时会遵循你package.json中"type":"module"的配置输出ESM格式代码,所以直接用Node运行正常;但ts-node-dev默认走CommonJS加载逻辑,无法直接引入ESM包,因此抛出错误。

具体修改步骤

  1. 调整tsconfig.json配置
    补充module字段,并添加ts-node专属配置开启ESM支持,修改后完整内容如下:
{
  "compilerOptions": {
    "lib": ["es2020"],
    "target": "es2020",
    "module": "ESNext",
    "moduleResolution": "Node",
    "strict": true,
    "esModuleInterop": true
  },
  "ts-node": {
    "esm": true,
    "experimentalSpecifierResolution": "node"
  }
}
  1. 修改package.json中的dev启动脚本
    给ts-node-dev添加--esm参数,适配ESM加载逻辑:
"scripts": {
  "dev": "ts-node-dev --esm index.ts",
  "build": "tsc"
}
  1. 可选优化
    如果修改后仍然报错,可将Node版本升级到16.x及以上的LTS版本,Node 14对ESM的支持还处于实验阶段,高版本Node的ESM兼容逻辑更稳定。

修改完成后重新执行npm run dev即可正常运行,和tsc编译后的运行表现完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:12:00