当我运行这个命令curl -vd '{"NickName":"Marry","Password":"pwd"}' -H "Content-type: application/json" http://127.0.0.1:3000/signin时,我在服务器端打印了No metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies.,并且validate不能正确执行。在此之前,我npm install了一些依赖项:
npm install --save routing-controllers
npm install --save class-transformer
npm install --save class-validator有人能帮帮忙吗?我该怎么解决这个问题呢?谢谢!
import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn } from 'typeorm';
import { Length } from 'class-validator';
import * as ErrorCode from '../error/errorcode'
@Entity()
export class User {
@PrimaryGeneratedColumn()
@Column({
name: "id"
})
Id?: number;
@Column({
name: "nickname"
})
@Length(1, 20, {
message: "NickName must be 1 to 20 characters",
context: {
errorCode: ErrorCode.ParamLengthNotInRange
}
})
Nickname: string;
@Column({
name: "password"
})
@Length(6,20)
Password: string;
//constructor(input : { Id : number , Nickname: string, Password: string}){
constructor(input : { Nickname: string, Password: string}){
//this.Id = input.Id;
this.Nickname = input.Nickname;
this.Password = input.Password;
}
}import { JsonController, Post, Body, Req } from "routing-controllers";
import { validate, ValidationError } from 'class-validator';
import {User} from '../entity'
@JsonController()
export class UserController {
@Post('/signin')
async signin(@Body() user: User) {
const errors: ValidationError[] = await validate(user)
if (errors && errors.length > 0) {
console.log(errors[0].contexts!['Length'].errorCode)
}
console.log(user)
return 'this is signin'
}
}发布于 2020-03-31 00:15:01
您可以通过执行以下操作来检查是否安装了更多版本的class-validator:
npm ls class-validator在我的例子中,我使用的是type-graphql,并且发现type-graphql也在安装class-validator的早期版本。因此,我只是将package.json中的版本降级到更早的版本,以使它们匹配,然后重新安装,消息就消失了。
希望这能有所帮助。
发布于 2021-03-02 20:15:01
我们收到了相同的信息。class-validator从0.12.2更新到0.13.1解决了这个问题。
https://stackoverflow.com/questions/60538631
复制相似问题