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

NestJS报错:找不到模块'./app.controller',编译正常运行异常求助

解决NestJS编译无错但运行时找不到模块的问题

我之前也踩过这个坑,结合你的报错信息和代码来看,大概率是编译输出异常或者配置问题导致的,咱们一步步排查:

1. 先确认编译后的文件是否存在

首先去你的C:\Users\DELL\Documents\DokunFiles\Nestjs\app\api\dist\src目录下,看看有没有app.controller.js这个文件。如果找不到,说明TypeScript编译时没有生成这个文件,得先解决编译的问题。

2. 检查tsconfig.json的关键配置

打开项目根目录的tsconfig.json,重点核对以下几个配置项:

  • outDir:确保设置为"./dist",这样编译产物会输出到dist目录下
  • include:必须包含"src/**/*",保证src下的所有.ts文件都被编译
  • exclude:不要把src目录或者app.controller.ts排除在外

给你一个标准的NestJS tsconfig.json参考片段:

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "ES2021",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "skipLibCheck": true,
    "strictNullChecks": false,
    "noImplicitAny": false,
    "strictBindCallApply": false,
    "forceConsistentCasingInFileNames": false,
    "noFallthroughCasesInSwitch": false
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "dist"]
}

3. 排查文件名大小写问题

Windows系统默认大小写不敏感,但Node.js在处理模块导入时,如果你开启了forceConsistentCasingInFileNames(tsconfig里的配置),或者后续部署到Linux环境,大小写不一致就会报错。比如你代码里写的是import { AppController } from './app.controller';,但实际文件名是App.controller.ts,编译后生成的是App.controller.js,这时候Node.js就找不到小写的app.controller.js。

4. 清理缓存并重新编译

有时候编译缓存会导致异常,试试以下步骤:

  • 手动删除项目根目录下的dist文件夹
  • 删除node_modules/.cache目录(Windows直接右键删除即可)
  • 重新执行编译命令:nest build(或者直接用tsc)
  • 再运行项目:npm start

5. 确认package.json的启动命令

检查你的package.json里的start命令是否指向正确的入口文件,比如:

"scripts": {
  "start": "node dist/src/main.js",
  "build": "nest build"
}

你的栈跟踪里显示入口是dist/src/main.js,所以这个应该没问题,但还是确认下路径有没有写错。

按照上面的步骤排查,应该能解决找不到模块的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:38:14