首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未找到元数据。可能安装了不止一次的类验证器版本。您需要扁平化您的依赖项

未找到元数据。可能安装了不止一次的类验证器版本。您需要扁平化您的依赖项
EN

Stack Overflow用户
提问于 2020-03-05 13:21:11
回答 2查看 904关注 0票数 0

当我运行这个命令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了一些依赖项:

代码语言:javascript
复制
npm install --save routing-controllers
npm install --save class-transformer
npm install --save class-validator

有人能帮帮忙吗?我该怎么解决这个问题呢?谢谢!

代码语言:javascript
复制
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;
    }

}
代码语言:javascript
复制
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'
    }
}
EN

回答 2

Stack Overflow用户

发布于 2020-03-31 00:15:01

您可以通过执行以下操作来检查是否安装了更多版本的class-validator

代码语言:javascript
复制
npm ls class-validator

在我的例子中,我使用的是type-graphql,并且发现type-graphql也在安装class-validator的早期版本。因此,我只是将package.json中的版本降级到更早的版本,以使它们匹配,然后重新安装,消息就消失了。

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2021-03-02 20:15:01

我们收到了相同的信息。class-validator从0.12.2更新到0.13.1解决了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60538631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档