问题描述
我正在尝试在 nestjs 中使用带有猫鼬模式的 joi 验证,但有一个错误我无法解决 这是我的代码 schema.dto.ts
import Joi from "joi"
import { JoiSchema,JoiSchemaOptions } from "nestjs-joi"
@JoiSchemaOptions({
allowUnkNown: false,})
export class EmployeesJoi {
@JoiSchema(Joi.string().required())fullName!: string;
}
这里是我的控制器的一个小演示
@Post('AddNew')
async add(@Body() employee: EmployeesJoi ) {
await console.log(employee)
}
}
最后,我遇到了那个错误
嵌套开始
H:\000\training-center\dist\employees\dto\employees.dto.js:21 nestjs_joi_1.JoiSchema(joi_1.default.string().required()),^
TypeError: Cannot read property 'string' of undefined
at Object.<anonymous> (H:\000\training-center\dist\employees\dto\employees.dto.js:21:42)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (H:\000\training-center\dist\employees\employees.controller.js:18:25)
解决方法
我很确定 joi
的导出是命名导出,所以你需要这样做
import * as Joi from 'joi';
代替
import Joi from 'joi';