Vapor Swift Error "Ссылка на член 'sqlite' не может быть решена без контекстного типа" - PullRequest
2 голосов
/ 25 марта 2020

На бесплатной sh установке Vapor (от homebrew) я звоню:

  • vapor new Bridge -> успех
  • vapor xcode -> успех
  • y (спрашивает, хочу ли я открыть проект в Xcode) -> открывает проект Xcode
  • vapor --version -> 3.1.10
  • vapor build -> не удается

Я получаю ошибку:

[1/3] Compiling App configure.swift
/Users/josh/Applications/Xcode/Projects/Bridge/Sources/App/configure.swift:31:49: error: reference to member 'sqlite' cannot be resolved without a contextual type
    migrations.add(model: Todo.self, database: .sqlite)
                                               ~^~~~~~
[2/3] Compiling App app.swift

Номера версий:

  • macOS: 10.15.3 (19D76)
  • Xcode: 11.4 (11E146)
  • Пар: 3.1.10
  • Swift: 5.2

Любая помощь в поиске решения этой ошибки приветствуется! Дайте мне знать, если я могу предоставить больше информации. Спасибо!

Ответы [ 2 ]

8 голосов
/ 25 марта 2020

Да, Vapor 3 испытывают проблемы с компиляцией на Swift 5.2
https://forums.swift.org/t/vapor-3-swift-5-2-regression/34764

migrations.add(model: Todo.self, database: .sqlite)

Приведенный выше код, который прекрасно компилируется в Swift 5.1, теперь приведет к следующему ошибка:

Reference to member 'sqlite' cannot be resolved without a contextual type

Это можно исправить, используя явный тип вместо синтаксиса начальной точки:

migrations.add(model: Todo.self, database: DatabaseIdentifier<SQLiteDatabase>.sqlite)
0 голосов
/ 29 апреля 2020

Добавить typelias в ToDo класс, когда вы используете Swift 5.2

final class Todo: SQLiteModel {

    typealias Database = SQLiteDatabase

    ....
}
...