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

使用ts-node运行导入文件的脚本时遭遇ERR_MODULE_NOT_FOUND错误求助

解决Monorepo中ts-node运行ESM脚本的模块找不到问题

核心问题分析

你遇到的ERR_MODULE_NOT_FOUND和unknown file type .ts错误,本质是ESM模式下ts-node的模块解析规则与TypeScript paths别名、Monorepo包导入的兼容性问题:

  • tsconfig-paths的CommonJS注册器tsconfig-paths/register在ESM模式下不生效
  • Node.js的ESM模块解析要求必须指定文件扩展名,而TypeScript默认配置未适配
  • Monorepo内部包的导入需要ts-node正确识别workspace链接的包

分步修复方案

1. 修正ts-node的ESM配置(关键)

修改@company/db/tsconfig.json中的ts-node配置,替换为ESM兼容的loader,并启用Node.js风格的模块解析:

{
  "extends": "../../tsconfig.base.json",
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@company/db/*": ["src/*"]
    },
    "allowImportingTsExtensions": true, // 允许直接导入.ts文件(适配ESM扩展名要求)
    "moduleResolution": "nodenext" // 适配ESM/CJS混合解析逻辑
  },
  "include": ["index.ts", "src/**/*", "scripts/**/*"],
  "ts-node": {
    "esm": true,
    "experimentalSpecifierResolution": "node", // 允许省略扩展名,匹配Node.js原生行为
    "loader": "tsconfig-paths/esm-loader" // ESM模式下的paths别名解析器
  }
}

2. 调整package.json的运行脚本

明确指定tsconfig文件路径,确保ts-node读取正确的配置:

{
  "scripts": {
    "seed": "pnpm with-env ts-node --project ./tsconfig.json ./scripts/seed.ts"
  }
}

3. 修复脚本中的导入路径

优先使用TypeScript别名(更适配Monorepo),或确保相对路径带有扩展名:

// 推荐:使用别名
import { db, connectDB } from "@company/db/db";
import { employees } from "@company/db/schemas";

// 备选:相对路径加扩展名
import { db, connectDB } from "../src/db.ts";
import { employees } from "../src/schemas.ts";

4. 适配Monorepo内部包导入

如果@company/db依赖其他Monorepo包(如@company/utils),需在tsconfig.json的paths中添加对应别名,确保ts-node能解析:

"paths": {
  "@company/db/*": ["src/*"],
  "@company/utils/*": ["../utils/src/*"] // 根据你的Monorepo结构调整路径
}

替代方案:用tsx替代ts-node

如果上述配置仍有问题,推荐使用tsx(基于esbuild,对ESM和Monorepo支持更友好,无需复杂配置):

  1. 安装依赖:pnpm add -D tsx
  2. 修改脚本:
{
  "scripts": {
    "seed": "pnpm with-env tsx ./scripts/seed.ts"
  }
}

tsx会自动读取tsconfig、处理paths别名和ESM模块,无需额外配置。


内容的提问来源于stack exchange,提问作者Nikola-Milovic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:42:11