使用@IsEnum校验时出现Cannot convert undefined or null to object错误排查
问题原因分析
以下是导致该错误的几种常见原因:
循环导入
若EvaluationStatusEnum所在文件,与包含UpdateEvaluationModelForReportChanges的文件存在循环导入(比如枚举文件间接导入了模型文件,反之亦然),会导致装饰器执行时枚举还未完成初始化,传入@IsEnum的参数为undefined,触发Cannot convert undefined or null to object错误。导入路径错误
检查EvaluationStatusEnum的导入路径是否正确:相对路径层级是否准确,或者在使用路径别名的项目中,别名配置是否生效。错误的导入路径会导致实际导入的是undefined,而非目标枚举。TypeScript编译配置问题
- 查看
tsconfig.json的module和moduleResolution配置,若模块解析方式与枚举文件的导出/导入逻辑不匹配(比如使用CommonJS模块但导出方式不符合规范),可能导致运行时枚举未被正确加载。 - 确认枚举文件是否在
tsconfig.json的include范围内,若被排除在编译外,编译后的代码中枚举会无法被正确引用。
- 查看
装饰器执行时机问题
class-validator的装饰器在类定义阶段同步执行,若EvaluationStatusEnum是通过动态导入或其他延迟加载方式引入的,会导致装饰器执行时枚举还未加载完成,传入@IsEnum的参数为undefined。
内容的提问来源于stack exchange,提问作者Adora González
相关产品推荐
相关产品推荐

