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

Node/TypeScript项目执行node dist/index.js提示找不到模块求助

问题分析与解决方法

问题根源

你在tsconfig.json里设置了baseUrl: "./src",这让TypeScript允许你用非相对路径(比如import ... from 'services/jwt')导入模块,但编译成CommonJS后,Node.js的模块解析逻辑不支持这种路径——Node.js默认会去node_modules目录查找模块,而非当前目录下的services文件夹,所以会报错找不到模块。

编译后的代码里,导入语句仍保持require('services/jwt')的形式,Node.js无法识别这是本地模块路径。


解决方案

方案一:用工具替换编译后的路径(推荐)

使用tsc-alias工具,自动把编译后代码中的非相对路径替换成Node.js能识别的相对路径:

  1. 安装依赖:
npm install -D tsc-alias
  1. 修改package.json的编译脚本,让编译后自动处理路径:
{
  "scripts": {
    "build": "tsc && tsc-alias"
  }
}
  1. 重新编译并运行项目:
npm run build
node dist/index.js

方案二:改用相对路径导入

直接把所有非相对导入改成相对路径,比如在需要导入services/jwt的文件中,把:

import { jwtService } from 'services/jwt';

改成:

import { jwtService } from './services/jwt'; // 根据文件所在层级调整相对路径

编译后会生成require('./services/jwt'),Node.js就能正确找到对应模块。

方案三:运行时指定模块解析路径

通过tsconfig-paths让Node.js在运行时识别TypeScript的路径配置:

  1. 安装依赖:
npm install -D tsconfig-paths
  1. 修改启动脚本或直接执行命令:
node --require tsconfig-paths/register dist/index.js

也可以把这个命令写到package.json的scripts里:

{
  "scripts": {
    "start": "node --require tsconfig-paths/register dist/index.js"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:43:35