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
相关产品推荐
相关产品推荐

