如何将Vapor 2 Swift 4项目推向Heroku

Dav*_*eek 7 heroku swift vapor xcode9

使用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
Run Code Online (Sandbox Code Playgroud)

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"])
    ]
)
Run Code Online (Sandbox Code Playgroud)

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

vzs*_*zsg 11

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

  1. .swift-version使用4.0inside 创建项目根目录中调用的文件.
  2. 提交并推送到Heroku.

buildpack现在将安装Swift 4,您的项目将编译.

更新(2017-11-13)

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