首页 热点专区 小学知识 中学知识 出国留学 考研考公
您的当前位置:首页正文

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 
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 

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

swift版本切换工具 swiftenv

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

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

显示全文