Heroku 部署失败

图片

前言

在使用vapor做的后端应用已经在heroku上跑了有一段时间,也遇到一些问题,下面这个问题就是博主在升级了swift 4.0后遇到的,分享出来给同样遇到这些问题的童鞋一个解决思路,如果你有更好方法可以在下方评论。

以下为部署时的log

Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (19/19), 4.88 KiB | 2.44 MiB/s, done.
Total 19 (delta 12), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Swift app detected
remote: Cloning into 'swiftenv'...
remote: Swift 3 Heroku Installer
remote: 🔢  Version: 3.1.1
remote: 🖥  Operating System: ubuntu1404
remote: 📦 Installing Swiftenv
remote: Cloning into '/app/.swiftenv'...
remote: 🐦 Installing Swift
remote: 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
remote: /tmp/swiftenv-3.1.1- /tmp/build_554a6f1c55a490cc4f7d6cb2cc75faaa
remote:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
remote:                                  Dload  Upload   Total   Spent    Left  Speed
remote: 100  117M  100  117M    0     0  5651k      0  0:00:21  0:00:21 --:--:-- 7384k
remote: /tmp/build_554a6f1c55a490cc4f7d6cb2cc75faaa
remote: 3.1.1 has been installed.
remote: ✅  Done
remote: precompile
remote: -----> Building Package ... this will take a while
remote: swift-build: error: unsatisfiable
remote:  !     Push rejected, failed to compile Swift app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !   Push rejected to xxxserver.
remote: 
To https://git.heroku.com/xxx.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/xxx.git'

这个问题比较的明显,就是swift的版本对不上,打包不了,当前博主的版本为4.0。脑海中第一个方法就是降级,但是想想,感觉有点不现实,所以只能试试多版本切换了。

swift版本切换工具 swiftenv

安装很简单,用brew就行了,一行命令搞定

brew install kylef/formulae/swiftenv

// 安装完成后,可以使用下面的命令查看本地安装的所有版本
swiftenv versions

因为要使用到的版本为3.1.1,而本地的版本只有一个就是4.0,所以我们要安装一个3.1.1的,swiftenv已经为我们提供了安装命令install,直接使用就行了

swiftenv install 3.1.1

特别说明下,安装好后,版本会直接切换到3.1.1,所以不需要在切换了。当然,你也许只想要这个项目的版本是3.1.1,其他的要最新的,这个需求swiftenv也可以做到,首先你要设置全局的版本,然后再设置局部的版本,就像这个

// 新打开一个终端,运行命令
swiftenv global 4.0

// 切换到你要设置版本项目的根目录下
swiftenv local 3.1.1

以上设置的完成时,你的全局版本为4.0,而你的项目的版本为3.1.1,想了解更多的swiftenv命令的可以点这里

O了,再把代码上传到heroku上打包,就是这么简单。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,269评论 4 61
  • 嗯哼嗯哼蹦擦擦~~~ 转载自:https://github.com/Tim9Liu9/TimLiu-iOS 目录 ...
    philiha阅读 5,054评论 0 6
  • 当今的社会,竞争越来越激烈。可以说,我们生活在一个到处充满压力的世界中。 不过,有压力并不一定是坏事。也正是这无穷...
    夢未來阅读 234评论 0 0