Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vapor Swift Error "Reference to member 'sqlite' cannot be resolved without a contextual type"

Tags:

swift

vapor

On a fresh install of Vapor (from homebrew) I call:

  • vapor new Bridge -> success
  • vapor xcode -> success
  • y (asks if I want to open the project in Xcode) -> opens Xcode project
  • vapor --version -> 3.1.10
  • vapor build -> fails

The error I get is:

[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

Version Numbers:

  • macOS: 10.15.3 (19D76)
  • Xcode: 11.4 (11E146)
  • Vapor: 3.1.10
  • Swift: 5.2

Any help figuring out how to solve this error is appreciated! Let me know if I can provide any more information. Thanks!

like image 799
Josh Grant Avatar asked Mar 25 '20 12:03

Josh Grant


1 Answers

Yeah Vapor 3 experience compilation problems on Swift 5.2
https://forums.swift.org/t/vapor-3-swift-5-2-regression/34764

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

The above code, which compiles fine in Swift 5.1, will now result in the following error:

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

This can be fixed by using an explicit type instead of leading-dot syntax:

migrations.add(model: Todo.self, database: DatabaseIdentifier<SQLiteDatabase>.sqlite)
like image 124
imike Avatar answered Oct 04 '22 08:10

imike