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

NestJS微服务依赖更新后启动报错:Cannot read properties of undefined (reading 'guards')

解决方案

1. 统一NestJS生态包版本

Cannot read properties of undefined (reading 'guards') 大概率是NestJS核心包与其他生态包版本不匹配导致的。打开你的package.json,确保所有@nestjs/*开头的依赖(比如@nestjs/core、@nestjs/common、@nestjs/microservices等)使用完全一致的版本号。

操作步骤:

  • 把所有@nestjs/*依赖的版本统一为同一个稳定版本(比如最新的9.x或10.x正式版)
  • 删除node_modules和package-lock.json
  • 执行npm install重新安装依赖

2. 兼容升级class-validator/class-transformer

class-validator <0.14.0的漏洞必须修复,但直接升级可能和NestJS版本冲突:

  • 若使用NestJS 9.x,升级class-validator到^0.14.0,同时同步升级class-transformer到^0.5.1(NestJS 9推荐的兼容版本)
  • 若使用NestJS 10.x,直接升级到class-validator@^0.14.0+即可,它与NestJS 10完全兼容

修改package.json后重新安装依赖,验证项目启动是否正常。

3. 安全修复webpack漏洞(无破坏性变更)

不用npm audit fix --force,而是通过npm overrides强制升级webpack到安全版本(5.76.0及以上),避免破坏其他依赖的版本范围:
在package.json中添加以下配置:

"overrides": {
  "webpack": "^5.76.0"
}

然后执行npm install,这样会强制所有间接依赖的webpack使用5.76.0+的版本,修复跨域对象访问漏洞。

4. 排查自定义守卫的兼容性

如果项目中有自定义守卫或扩展NestJS守卫逻辑的代码,检查是否依赖了旧版本的API:

  • 比如旧版本中ExecutionContext的getHandler()或getClass()返回值的结构变化,导致无法正确获取guards属性
  • 对照NestJS官方文档,更新自定义守卫的代码以适配新版本API

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:47:15