在终端中执行 swift run 命令时,Swift 错误消息:“错误:没有名为“App”的可执行产品”

Dan*_*son 5 xcode ios swift vapor

我正在尝试在过去没有问题的 Vapor/Fluent 应用程序上运行快速命令。我正在运行swift run App migrate,它通常会更新任何迁移。但它抛出了标题中的错误。

我查看了包文件,其中有:

 targets: [
        .target(
            name: "App",
            dependencies: [
                .product(name: "Vapor", package: "vapor"),
                .product(name: "FluentPostgresDriver", package: "fluent-postgres-driver"),
                .product(name: "Fluent", package: "fluent"),
                .product(name: "Leaf", package: "leaf"),
//                .product(name: "SendGrid", package: "sendgrid"),
            ],
            swiftSettings: [
                // Enable better optimizations when building in Release configuration. -- Despite the use of
                // the `.unsafeFlags` construct required by SwiftPM, this flag is recommended for Release
                // builds. See <https://github.com/swift-server/guides#building-for-production> for details.
                .unsafeFlags(["-cross-module-optimization"], .when(configuration: .release))
            ]
        ),
       
        .target(name: "Run", dependencies: [.target(name: "App")]), // comment what follows
        .testTarget(name: "AppTests", dependencies: [
            .target(name: "App"),
            .product(name: "XCTVapor", package: "vapor"),
        ])
        // to here
    ]
Run Code Online (Sandbox Code Playgroud)

而顶部的名称有所不同。我尝试使用包部分中设置的名称重新输入命令,但这没有什么区别。

我已经在多个其他类似的项目中尝试过同样的事情,包括那些几个月没有更改过的项目,并且以前工作过,但我得到了同样的错误。尝试安装命令行工具表示一切都是最新的。将 Xcode 重置为标准路径(从未更改)不会执行任何操作...

我对这个有点不知所措......非常感谢任何答案。

bpl*_*urg 3

在某些时候,快速工具似乎发生了变化,以期望executableTargetName您正在运行的内容是(“运行”)而不是targetName(“应用程序”)。

因此,对于您的示例(以及我的蒸气项目,这就是我解决这个问题的方法)swift run App migrate,您现在需要运行而不是运行swift run Run migrate