Добавить PostgreSQL в паровой проект

Я добавил .package(url: "https://github.com/vapor-community/postgresql-provider.git", .upToNextMajor(from: "2.1.0")) в свой файл Package.swift, запустил vapor update и позволил ему регенерировать проект Xcode. Когда я затем добавляю импорт PostgreSQLProvider, Xcode не может его найти. У меня уже установлены postgresql и pkg-config через homebrew.

Я использую Xcode 9 и Swift 4


person Gargoyle    schedule 05.11.2017    source источник
comment
PostgreSQLProvider также необходимо добавить в целевые зависимости в Package.swift. Например: .target(name: "App", dependencies: ["Vapor", "FluentProvider", "PostgreSQLProvider"],   -  person l --marc l    schedule 05.11.2017
comment
Спасибо. Я действительно изо всех сил пытаюсь разобраться в Vapor. Почти все уроки, которые я вижу, предназначены для Vapor 1 :(   -  person Gargoyle    schedule 05.11.2017
comment
уроки, которые я вижу, предназначены для паров 1… да, лежачих полицейских. Лаборатория примеров паров начала работу с переносом примеров с Vapor 1 на Vapor 2 + Swift 4 (которые иначе не опубликовано как Vapor 2).   -  person l --marc l    schedule 05.11.2017


Ответы (2)


Похоже, вы используете менеджер пакетов Swift 4. API для него был обновлен, поэтому вам нужно явно добавить зависимость к цели:

// swift-tools-version:4.0

import PackageDescription

let package = Package(
    name: "Project",
    products: [
        .library(name: "App", targets: ["App"]),
        .executable(name: "Run", targets: ["Run"])
    ],
    dependencies: [
        .package(url: "https://github.com/vapor/vapor.git", .upToNextMajor(from: "2.1.0")),
        .package(url: "https://github.com/vapor/fluent-provider.git", .upToNextMajor(from: "1.2.0")),
        .package(url: "https://github.com/vapor-community/postgresql-provider.git", .exact("2.1.0"))
    ],
    targets: [
        .target(name: "App", dependencies: ["Vapor", "FluentProvider", "PostgreSQLProvider"],
                exclude: [
                    "Config",
                    "Public",
                    "Resources",
                ]),
        .target(name: "Run", dependencies: ["App"]),
        .testTarget(name: "AppTests", dependencies: ["App", "Testing"])
    ]
)

См. Выше, я добавил пакет PostgreSQLProvider в массив dependencies для App target.

person Caleb Kleveter    schedule 06.11.2017

У меня тоже была эта проблема, и ее было недостаточно с паровым xcode, потому что он только регенерирует проект и не извлекает новые зависимости, такие как postgree, который вы добавляете, чтобы решить эту проблему, используйте паровую выборку, а затем паровой xcode, обе команды с проектом закрыто

person cristian zapata    schedule 15.11.2017