Vapor 2 验证有效类型抛出 "Use of undeclared type Valid"

Vapor 2 Validation Valid-Type throws "Use of undeclared type Valid"

我尝试使用 Vapor 2 有效类型,但编译器只说:"Use of undeclared type Valid"。

我读过:https://docs.vapor.codes/2.0/validation/package/ + https://docs.vapor.codes/2.0/validation/overview/

在我的 Package.swift 我定义了

作为依赖项。

如果我尝试使用 Valid<SomeValidator>,编译器会说:"Use of undeclared type Valid".

使用 import Validationimport VaporValidation 没有区别。

有没有人知道如何让 Valid 工作?

感谢您的帮助。

编辑: 我创建了一个新的 Vapor 项目 vapor new validtest --api.

编辑了 Package.swift:

import PackageDescription

let package = Package(
    name: "validtest",
    targets: [
        Target(name: "App"),
        Target(name: "Run", dependencies: ["App"]),
    ],
    dependencies: [
        .Package(url: "https://github.com/vapor/vapor.git", majorVersion: 2),
        .Package(url: "https://github.com/vapor/validation.git", majorVersion: 1),
        .Package(url: "https://github.com/vapor/validation-provider.git", majorVersion: 1),
        .Package(url: "https://github.com/vapor/fluent-provider.git", majorVersion: 1)
    ],
    exclude: [
        "Config",
        "Database",
        "Localization",
        "Public",
        "Resources",
    ]
)

运行 vapor fetchvapor xcode.

在示例代码的 Routes.swift 中,我试过这个:

import Vapor
import FluentProvider
import Validation
// or and both imports are tested
import VaporValidation

extension Droplet {
    func setupRoutes() throws {
        get("info") { req in

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

无论我使用哪个导入,编译器总是说:"Use of undeclared type Valid".

我遇到了同样的问题。这应该有效:

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

...

import Validation

...

try EmailValidator().validate(email)

而不是

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

Vapor 2 的验证使用

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

如果输入字符串无效,将抛出一个ValidationError