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

Node.js工作区ts-node运行.ts文件遇扩展名及模块查找问题求助

问题解决方案

针对你遇到的两个错误,分别给出具体修复步骤:

1. 解决ERR_UNKNOWN_FILE_EXTENSION错误

根目录package.json设置了"type": "module",意味着整个项目采用ESM模块规范,而默认的ts-node运行模式是CommonJS,两者不兼容导致扩展名识别失败。需要让ts-node以ESM模式运行:

  • 修改tsconfig.json,添加ts-node的ESM配置:
{
  "compilerOptions": {
    "moduleResolution": "node16", // 替换原有的node,适配ESM解析规则
    "module": "ES2022", // 保持原有配置或改为ESNext均可
    "esModuleInterop": true,
    "target": "ES2022",
    "skipLibCheck": true,
    "resolveJsonModule": true
  },
  "ts-node": {
    "esm": true // 强制启用ESM模式
  }
}
  • 使用正确的运行命令:
npx ts-node --esm ./WebAPI/server.ts

2. 解决模块找不到的错误

这个错误有两个核心原因:

原因1:ESM规范要求显式文件扩展名

ESM模式下,导入文件必须添加.ts扩展名,修改你的导入语句:

import { RegisterUserPresenter } from "../Presenters/RegisterUserPresenter.ts";

原因2:运行命令的路径错误

你之前用的ts-node-esm src/webapi/server.ts路径不对——你的项目结构里没有src目录,正确路径应该是./WebAPI/server.ts。

可选优化:避免每次加扩展名

如果不想每次导入都写扩展名,可以在tsconfig.json的ts-node配置里添加:

"ts-node": {
  "esm": true,
  "experimentalSpecifierResolution": "node" // 模拟Node.js的CommonJS解析逻辑,允许省略扩展名
}

额外检查

  • 确认WebAPI/Presenters/RegisterUserPresenter.ts文件真实存在,路径大小写要和导入语句一致(Linux/macOS环境区分大小写)
  • 如果你是直接运行源码而非rollup编译后的文件,确保所有导入路径都指向源码文件,而非build目录下的编译产物

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:09:23