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

使用ts-node-esm导入本地TS模块时提示找不到模块的问题

问题排查与解决

1. Node.js ESM 强制要求导入路径带扩展名

Node.js 的 ES 模块(ESM)规范里,相对导入必须明确指定文件扩展名——TypeScript 的模块解析允许省略 .ts 扩展名,但 ts-node-esm 会严格遵循 Node.js ESM 的规则,不会自动补全扩展名。

解决:修改导入语句,加上 .ts 后缀:

import { getConfig } from "./config.ts";

2. tsconfig.json 配置未对齐 Node.js ESM 规则

检查你的 tsconfig.json 是否配置了正确的 ESM 相关选项,关键配置项:

  • compilerOptions.module 需设为 ESNext/ES2020+(匹配 Node.js 支持的 ESM 版本)
  • compilerOptions.moduleResolution 设为 NodeNext 或 Node16(这两个模式严格对齐 Node.js 的 ESM/CJS 解析逻辑)
  • 项目根目录的 package.json 必须添加 "type": "module"(这是 Node.js 识别 ESM 项目的核心标记,很多人会遗漏)

示例正确配置片段:

{
  "compilerOptions": {
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "target": "ES2020",
    "esModuleInterop": true,
    "strict": true,
    "rootDir": "./src"
  },
  "include": ["src/**/*"]
}

package.json 补充配置:

{
  "type": "module"
}

3. ts-node-esm 版本或缓存问题

旧版本的 ts-node-esm 存在模块解析 bug,先升级到最新版:

# 全局升级
npm install -g ts-node@latest typescript@latest
# 或本地依赖升级
npm install ts-node typescript --save-dev

同时清理 ts-node 缓存:

ts-node --clear-cache

4. Windows 路径分隔符兼容问题

你使用的是 Windows 系统,尝试将运行命令里的反斜杠改为正斜杠:

ts-node-esm ./src/main.ts

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:44:59