Невозможно создать действующий, работающий, новый проект при использовании Vapor4 - PullRequest
2 голосов
/ 26 апреля 2020

Мой контекст:

  • macOS Catalina версия 10.15.3
  • Xcode 11,4
  • Swift 5.2
  • Vapor4

Я создаю новый проект Vapor с vapor-beta new myProjectName

Он спрашивает, хочу ли я использовать Fluent, на что я согласен (y), и спрашивает, какую базу данных я хочу (1. * postgreSQL 2. MySql 3. SQLite). Я пошел с вариантом 3; SQLite - это то, что мне нужно.

Затем он загружает шаблон и предположительно настраивает его с моими выбранными выше параметрами. Останавливается / останавливается на

Generating project files
+ Package.Swift

После этой строки ничего не происходит, даже после 10 минут ожидания.

Когда я просматриваю папку своего приложения, появляется скрытая папка .vapor-template, которая кажется, содержит структуру папок приложения. Я не могу просто начать использовать его, потому что многие файлы кажутся ... незаконченными, в некотором роде. Например, вот как выглядит Package.swift:

let package = Package(
    name: "{{name}}",
    platforms: [
       .macOS(.v10_15)
    ],
    dependencies: [
        // ? A server-side Swift web framework.
        .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0-rc"){{#fluent}},
        .package(url: "https://github.com/vapor/fluent.git", from: "4.0.0-rc"),
        .package(url: "https://github.com/vapor/fluent-{{fluent.db.url}}-driver.git", from: "{{fluent.db.version}}-rc"){{/fluent}}
    ],
    targets: [
        .target(name: "App", dependencies: [{{#fluent}}
            .product(name: "Fluent", package: "fluent"),
            .product(name: "Fluent{{fluent.db.module}}Driver", package: "fluent-{{fluent.db.url}}-driver"),{{/fluent}}
            .product(name: "Vapor", package: "vapor")
        ]),
        .target(name: "Run", dependencies: ["App"]),
        .testTarget(name: "AppTests", dependencies: [
            .target(name: "App"),
            .product(name: "XCTVapor", package: "vapor"),
        ])
    ]
)

Как видите, название проекта не задано (я имею в виду вещь name: "{{name}}"), и их много странных ссылок на {{#fluent}} или "{{fluent.db.version}}-rc"), которые сводят с ума компилятор. Похоже, что команде «steam new» нужно было еще немного поработать над настройкой, чтобы у нее просто не было возможности завершить работу sh. Та же история повторяется в configure.swift и rout.swift.

Я просмотрел все из них, удалив странные заполнители только для того, чтобы столкнуться с некоторой ситуацией configure.swift, в которой он жалуется на то, что .sqlite не распознается или что-то в этом роде. , Я посмотрел его в google / stackoverflow, попробовал некоторые исправления, которые не работали ... пока я не сделал шаг назад, осознал, что, черт возьми ... Я не должен был делать все это, ШерлокХолмс-ин ... " Команда "Новый пара" должна просто работать и успешно завершаться sh ... Впоследствии у меня много работы ... Этот простой шаг helloWorld-i sh должен просто работать ...

Если кто-нибудь У меня есть некоторые идеи для успешного создания проекта Vapor4, я буду благодарен ... (простое выполнение шагов в https://docs.vapor.codes/4.0/hello-world/ не способствует работающему проекту)

LE: спасибо по предложению imike, я отправился в сообщество Vapor на Discord и нашел свое решение. Путь к папке моего проекта содержит несколько пробелов и тире. Удаление тех позволило процессу завершиться правильно sh. Отличное, полезное сообщество!

1 Ответ

1 голос
/ 26 апреля 2020

похоже, что-то не так с системой шаблонов.

Вы можете исправить Package.swift самостоятельно

let package = Package(
    name: "YourProject",
    platforms: [
       .macOS(.v10_15)
    ],
    dependencies: [
        // ? A server-side Swift web framework.
        .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0-rc"),
        .package(url: "https://github.com/vapor/fluent.git", from: "4.0.0-rc"),
        .package(url: "https://github.com/vapor/fluent-postgres-driver.git", from: "2.0.0-rc")
    ],
    targets: [
        .target(name: "App", dependencies: [
            .product(name: "Fluent", package: "fluent"),
            .product(name: "FluentPostgresDriver", package: "fluent-postgres-driver"),
            .product(name: "Vapor", package: "vapor")
        ]),
        .target(name: "Run", dependencies: ["App"]),
        .testTarget(name: "AppTests", dependencies: [
            .target(name: "App"),
            .product(name: "XCTVapor", package: "vapor"),
        ])
    ]
)
...