NestJS中使用Joi配置validationSchema时出现读取object未定义错误
解决Joi在NestJS中出现"Cannot read properties of undefined (reading 'object')"错误
问题分析
该错误是因为Joi导入方式不正确,导致Joi变量为undefined,无法调用Joi.object()方法。
解决步骤
1. 修正Joi导入语句
将默认导入改为命名空间导入:
// 替换原有的 import Joi from 'joi'; import * as Joi from 'joi';
2. 确认Joi依赖正常
若修改导入后仍有问题,重新安装Joi确保依赖完整:
npm install joi # 或使用yarn yarn add joi
修改后的完整配置示例
import * as Joi from 'joi'; import { ConfigModule } from '@nestjs/config'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, validationSchema: Joi.object({ PORT: Joi.number().required(), MONGODB_URI: Joi.string().required(), }), }), ], }) export class AppModule {}
原因说明
Joi v17及以上版本采用CommonJS规范导出模块,而非ES模块的默认导出机制。直接使用import Joi from 'joi'会导致导入的Joi为undefined,必须通过import * as Joi from 'joi'完整导入Joi的所有导出内容。
内容的提问来源于stack exchange,提问作者DolDurma
相关产品推荐
相关产品推荐

