【问题标题】:undeclared type 'valid', no such module 'Validation'未声明的类型“有效”,没有这样的模块“验证”
【发布时间】:2017-09-21 16:44:51
【问题描述】:

当我尝试键入时,我正在跟随 Ray Wenderlich (https://videos.raywenderlich.com/screencasts/545-server-side-swift-with-vapor-basic-validation)(它没有可编译的项目)的屏幕投射

let input: Valid<OnlyAlphanumeric> = try request.data["input"].validated()

编译器告诉我 Valid 不存在。我试着寻找这个,发现 Vapor 不再像这样进行验证,它使用了不同的行:https://stackoverflow.com/a/45363444/2305517 分别是:

guard let input = req.data["input"]?.string else { throw SomeError }
try input.validated(by: OnlyAlphanumeric())

但是字符串没有一个叫做validated(by:)的函数

我尝试导入验证,但模块不存在。

现在有办法完成教程吗?验证似乎根本不在 Vapor 代码中。

【问题讨论】:

    标签: validation vapor


    【解决方案1】:

    您需要将validation-provider 包添加到您的项目中。您可以通过将包添加到 Package.swift 文件中的依赖项数组来完成此操作:

    对于 Swift 3,您可以添加以下内容:

    .Package(url: "https://github.com/vapor/validation-provider.git", majorVersion: 1)
    

    在 Swift 4 中,它看起来像这样:

    .package(url: "https://github.com/vapor/validation-provider.git", from: "1.0.0"),
    

    然后运行vapor update,如果您使用的是Xcode,则运行vapor xcode

    然后您可以将ValidationProvider 导入到您需要的文件中。

    确保将提供程序添加到您的config

    try config.addProvider(ValidationProvider.Provider.self)
    

    【讨论】:

    • 对于那些追随我的人,你现在(我相信从 Vapor 3 开始)还需要将"ValidationProvider"添加到目标依赖项。所以在目标下,依赖项看起来像dependencies: ["Vapor", "FluentProvider", "ValidationProvider"],
    • 正确地说,如果您使用的是 Swift 4 或更高版本的 Package.swift 版本。感谢@NateBirkholz。
    猜你喜欢
    • 2018-03-28
    • 2018-08-10
    • 2017-02-09
    • 2019-02-21
    • 2018-03-21
    • 2021-12-07
    • 2023-03-27
    • 2018-12-18
    • 2018-11-16
    相关资源
    最近更新 更多