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

Nodejs+Typescript+Router+ts-node-esm模块未找到问题求助

Node.js/React+TypeScript 模块导入报错:Cannot find module

我正在搭建首个Node.js/React+TypeScript应用,尝试从/src/routes/tickerRouter导入路由到server/index.ts时触发报错:

/.../node_modules/ts-node/dist-raw/node-internal-modules-esm-resolve.js:366
    throw new ERR_MODULE_NOT_FOUND(
          ^
CustomError: Cannot find module '/.../react-node-app/server/src/routes/tickerRouter' imported from /.../react-node-app/server/index.ts

已尝试的操作:

  • 所有文件均使用.ts扩展名而非.js
  • 在index.ts的导入语句中添加.js,实际文件保持.ts扩展名
  • 使用ts-node-esm server/index.ts启动项目
  • 在package.json中添加"type": "module"
  • 使用export default替代module.exports =
  • 查阅大量资料仍未解决,寻求帮助。

可能的解决方向

1. 修正导入路径的正确性

从报错路径可以看出,系统在/react-node-app/server/src/routes/下寻找模块,但你的项目结构大概率是根目录下同时存在src和server文件夹。此时需根据相对路径调整导入语句:
如果index.ts在server文件夹,tickerRouter.ts在根目录的src/routes下,正确导入应为:

import tickerRouter from '../src/routes/tickerRouter.js';

2. 检查tsconfig.json核心配置

确保tsconfig.json的compilerOptions适配ESM与TypeScript的组合:

{
  "compilerOptions": {
    "module": "ESNext",
    "moduleResolution": "NodeNext",
    "target": "ES2020",
    "esModuleInterop": true,
    "skipLibCheck": true,
    "baseUrl": "./",
    "include": ["src/**/*", "server/**/*"]
  }
}

如果使用路径别名(如@/routes/xxx),需额外添加paths配置,并保证导入时带.js后缀。

3. 调整ts-node启动参数

使用ts-node-esm时,显式指定tsconfig路径避免配置加载异常:

ts-node-esm --project tsconfig.json server/index.ts

4. 尝试先编译再运行

若ts-node的ESM兼容存在问题,可先编译TypeScript代码再执行:

tsc # 执行编译,需确保tsconfig中outDir配置正确
node dist/server/index.js # 替换为你的编译输出目录路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:35:43