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

NestJS项目启动报错:Cannot read properties of undefined (reading 'values')

NestJS启动报错:Cannot read properties of undefined (reading 'values') 排查方案

错误信息

[Nest] 8792  - 06/10/2023, 3:32:29 pm   ERROR [ExceptionHandler] Cannot read properties of undefined (reading 'values')
TypeError: Cannot read properties of undefined (reading 'values')
    at ./api\services\node-app\node_modules\@nestjs-plus\discovery\src\discovery.service.ts:68:50     
    at arrayMap (./api\services\node-app\node_modules\lodash\lodash.js:653:23)
    at map (./api\services\node-app\node_modules\lodash\lodash.js:9622:14)
    at Function.flatMap (./api\services\node-app\node_modules\lodash\lodash.js:9325:26)
    at new DiscoveryService (./api\services\node-app\node_modules\@nestjs-plus\discovery\src\discovery.service.ts:67:7)
    at Injector.instantiateClass (./api\services\node-app\node_modules\@nestjs\core\injector\injector.js:365:19)
    at callback (./api\services\node-app\node_modules\@nestjs\core\injector\injector.js:65:45)        
    at Injector.resolveConstructorParams (./api\services\node-app\node_modules\@nestjs\core\injector\injector.js:144:24)
    at Injector.loadInstance (./api\services\node-app\node_modules\@nestjs\core\injector\injector.js:70:13)
    at Injector.loadProvider (./api\services\node-app\node_modules\@nestjs\core\injector\injector.js:97:9)
    at Injector.lookupComponentInImports (./api\services\node-app\node_modules\@nestjs\core\injector\injector.js:289:17)
    at Injector.lookupComponentInParentModules (./api\services\node-app\node_modules\@nestjs\core\injector\injector.js:252:33)
    at Injector.resolveComponentInstance (./api\services\node-app\node_modules\@nestjs\core\injector\injector.js:207:33)
    at resolveParam (./api\services\node-app\node_modules\@nestjs\core\injector\injector.js:128:38)   
    at async Promise.all (index 0)
    at Injector.resolveConstructorParams (./api\services\node-app\node_modules\@nestjs\core\injector\injector.js:143:27)
    at Injector.loadInstance (./api\services\node-app\node_modules\@nestjs\core\injector\injector.js:70:13)
    at Injector.loadProvider (./api\services\node-app\node_modules\@nestjs\core\injector\injector.js:97:9)
    at ./api\services\node-app\node_modules\@nestjs\core\injector\instance-loader.js:56:13
    at async Promise.all (index 0)
    at InstanceLoader.createInstancesOfProviders (./api\services\node-app\node_modules\@nestjs\core\injector\instance-loader.js:55:9)
    at ./api\services\node-app\node_modules\@nestjs\core\injector\instance-loader.js:40:13
    at async Promise.all (index 33)
    at InstanceLoader.createInstances (./api\services\node-app\node_modules\@nestjs\core\injector\instance-loader.js:39:9)
    at InstanceLoader.createInstancesOfDependencies (./api\services\node-app\node_modules\@nestjs\core\injector\instance-loader.js:22:13)
    at ./api\services\node-app\node_modules\@nestjs\core\nest-factory.js:108:17
    at Function.asyncRun (./api\services\node-app\node_modules\@nestjs\core\errors\exceptions-zone.js:22:13)
    at NestFactoryStatic.initialize (./api\services\node-app\node_modules\@nestjs\core\nest-factory.js:106:13)
    at NestFactoryStatic.create (./api\services\node-app\node_modules\@nestjs\core\nest-factory.js:42:9)

排查思路

  • 版本兼容性检查:@nestjs-plus/discovery 与当前 @nestjs/core 版本不兼容是常见原因。对照两者的官方版本说明,升级或降级到匹配的版本。
  • 模块导入验证:确认是否在 AppModule(或依赖该服务的模块)中正确导入 DiscoveryModule,示例代码:
    import { DiscoveryModule } from '@nestjs-plus/discovery';
    
    @Module({
      imports: [DiscoveryModule],
      // ...其他配置
    })
    export class AppModule {}
    
  • 自定义代码排查:如果有基于 @nestjs-plus/discovery 编写的自定义装饰器或服务调用,检查是否存在依赖注入错误,比如未正确注入 DiscoveryService 或调用方法时参数缺失。
  • 依赖缓存清理:删除 node_modules、package-lock.json(或 yarn.lock),重新执行 npm install(或 yarn install),排除依赖包损坏或缓存冲突。

额外调试配置

  • Node.js 详细堆栈跟踪:启动应用时添加参数,获取更完整的调用链:
    node --trace-warnings dist/main.js
    
  • NestJS 日志级别调整:在 main.ts 中手动设置 verbose 级别日志,输出更多初始化细节:
    async function bootstrap() {
      const app = await NestFactory.create(AppModule, {
        logger: ['log', 'error', 'warn', 'debug', 'verbose'],
      });
      await app.listen(3000);
    }
    bootstrap();
    
  • 断点调试:在 VSCode 中直接在 node_modules/@nestjs-plus/discovery/src/discovery.service.ts 第68行附近设置断点,运行调试模式,查看具体哪个变量为 undefined,定位依赖注入失败的根源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:34:50