【问题标题】:How to push Vapor 2 Swift 4 project to Heroku如何将 Vapor 2 Swift 4 项目推送到 Heroku
【发布时间】:2018-03-16 12:22:26
【问题描述】:

使用 Xcode 9 和 Swift 4 以及 vapor heroku push / vapor heroku init,我收到:

-----> Swift app detected
Cloning into 'swiftenv'...
Swift 3 Heroku Installer
????  Version: 3.1.1
????  Operating System: ubuntu1404
???? Installing Swiftenv
Cloning into '/app/.swiftenv'...
???? Installing Swift
Downloading https://swift.org/builds/swift-3.1.1-release/ubuntu1604/swift-3.1.1-RELEASE/swift-3.1.1-RELEASE-ubuntu16.04.tar.gz
/tmp/swiftenv-3.1.1- /tmp/build_d
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
/tmp/build_d
3.1.1 has been installed.
✅  Done
-----> Installing clang-3.7.0
precompile
-----> Building Package ... this will take a while
swift-build: error: Package requires minimum Swift tools version 4.0.0. Current Swift tools version is 3.1.0
 !     Push rejected, failed to compile Swift app.
 !     Push failed

Package.swift 文件中写着:

// swift-tools-version:4.0

import PackageDescription

let package = Package(
    name: "name",
    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")),
    ],
    targets: [
        .target(name: "App", dependencies: ["Vapor", "FluentProvider"],
                exclude: [
                    "Config",
                    "Public",
                    "Resources",
                ]),
        .target(name: "Run", dependencies: ["App"]),
        .testTarget(name: "AppTests", dependencies: ["App", "Testing"])
    ]
)

除此之外,它实际上是最初的 api 模板项目。我错过了什么?非常感谢您的帮助。

【问题讨论】:

  • 尝试在顶部注释掉swift-tools-version:4.0
  • 不幸的是,这还不够,因为 Package.swift 的第 3 版和第 4 版之间还有其他重大语法更改。

标签: swift heroku xcode9 vapor


【解决方案1】:

项目模板最近更新为需要 Swift 4,但 Heroku buildpack 仍默认安装 Swift 3.1.1。在更新模板以解决这种情况之前,请执行以下操作:

  1. 在您的项目根目录中创建一个名为.swift-version 的文件,其中包含4.0
  2. 提交并推送到 Heroku。

buildpack 现在将安装 Swift 4 并且您的项目将编译。

更新 (2017-11-13)

我已更新 buildpack,因此不再需要上述步骤。
没有固定版本的新应用程序和推送将使用 Swift 4.0.2。

【讨论】:

    【解决方案2】:

    先安装swift 4.0,然后设置为builder。

    swiftenv install 4.0
    swiftenv local 4.0
    

    参考:https://github.com/kylef/heroku-buildpack-swift

    【讨论】:

    • install swift 4 是什么意思,还有:set it as builder 在哪里?我知道您希望您的回答对未来的读者有所帮助。但像 6 个字,它真的不是。
    【解决方案3】:

    上面的答案是完美的,我只是尝试为那些可能会感到困惑(比如我:D)并有疑问如何?

    转到您的项目根目录。

    1. 创建类似的 swift-version
      • $ touch .swift-version
    2. 打开那个文件

      • $ 打开 .swift-version

        写4.0

    3. 保存该文件

    完成:)

    【讨论】:

      猜你喜欢
      • 2020-07-13
      • 1970-01-01
      • 2013-01-09
      • 2013-01-07
      • 2014-06-26
      • 1970-01-01
      • 2012-12-20
      • 2019-04-16
      • 1970-01-01
      相关资源
      最近更新 更多