运行 Swift 在 Heroku 上:加载共享库时出错

Running Swift on Heroku: error while loading shared libraries

我正在尝试将 Swift 应用程序部署到 Heroku。我正在使用 Swift 5.0.2 和 Heroku Stack 18。此应用程序之前使用 Swift 3.0 和 Heroku Stack 16。

我不确定这个错误到底在告诉我什么,所以我不太清楚从哪里开始修复它。我正在使用 Heroku 构建包的一个分支,因为它甚至不支持他们自己的 Stack 18。https://github.com/onuniverse/heroku-buildpack-swift

2019-07-19T00:25:55.906961+00:00 heroku[web.1]: State changed from crashed to starting
2019-07-19T00:25:57.109052+00:00 heroku[web.1]: Starting process with command `Unibot --bind 0.0.0.0:58139`
2019-07-19T00:25:58.829639+00:00 heroku[web.1]: State changed from starting to crashed
2019-07-19T00:25:58.761232+00:00 app[web.1]: Unibot: error while loading shared libraries: libicui18nswift.so.61: cannot open shared object file: No such file or directory
Unibot: error while loading shared libraries: libicui18nswift.so.61:
cannot open shared object file: No such file or directory

日志的最后一行表明您使用的 buildpack 没有正确复制 Swift 工具链中的所有共享库,这可能是因为它正在寻找预定义的库名称,或者没有考虑符号链接– 在 Swift 5.0.

中引入

我建议再次尝试使用 vapor/vapor buildpack(可作为源 here 使用),它支持 Swift 5.0.2 和开箱即用的 heroku-18 堆栈。

尽管名称如此,但它不包含任何内容 Vapor-specific,并且适用于任何 Swift 项目。