首页 > 解决方案 > 使用 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")吓坏了编译器。看起来“vapor new”命令有更多的自定义工作要做,但它根本没有机会完成。同样的故事在 configure.swift 和 routes.swift 中重复。

我确实梳理了所有这些,删除了奇怪的占位符,只是碰到了一些 configure.swift 的情况,它抱怨 .sqlite 没有被识别或什么的。我确实在 google / stackoverflow 上查找了它,尝试了一些不起作用的修复程序......直到我退后一步才意识到地狱......我不应该做所有这些 SherlokHolmes-ing......“ vapor new”命令应该可以简单地工作并成功完成......之后我还有很多工作......这个简单的helloWorld-ish步骤应该很简单......

如果有人对成功创建 Vapor4 项目有一些见解,我将不胜感激......(只需遵循https://docs.vapor.codes/4.0/hello-world/ 上的步骤不利于工作项目)

LE:感谢 imike 的建议,我前往 Discord 上的 Vapor 社区并找到了我的解决方案。我的项目的文件夹路径恰好包含一些空格和破折号。删除那些允许该过程正确完成。伟大的,乐于助人的社区!

标签: swiftvaporvapor-fluent

解决方案


模板系统似乎有问题。

你可以 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"),
        ])
    ]
)

推荐阅读