0

在本地创建一个 Kitura 应用并编译构建成功。但是一段时间后尝试部署到heroku时,我得到以下输出:

/tmp/build_cbc1c98480abd8ace78731a677031c0a/.build/checkouts/Kitura.git--211144618449703330/Sources/Kitura/RouterRequest.swift:56:33:错误:使用未解析的标识符“RegularExpression”远程:让正则表达式=尝试正则表达式(模式:模式,选项:[.caseInsensitive]) 远程:^~~~~~~~~~~~~~~~~ 远程:Foundation.NSRegularExpression:1:12:注意:您的意思是“NSRegularExpression”吗?远程:开放类 NSRegularExpression:Foundation.NSObject,NSCopying,NSCoding {

使用的 swift 版本是 3.1,我在通过 .swift-version 文件推送到 heroku 时指定了相同的版本。

这是使用的 Package.swift

使用的 Kitura 版本是 1 大 7 小调

尝试其他版本的 swift 例如 3.1.1 会导致挂起 - 以至于 heroku 由于超时而取消。任何帮助都感激不尽。谢谢

4

1 回答 1

1

首先,请注意您在 Mac 和 Linux 上遇到 Swift 的差异。您可能在 Mac 上检查过它,而 Heroku 运行 Linux。

其次,在这个拉取请求中RegularExpression被替换为https://github.com/IBM-Swift/Kitura/pull/1107。从 Kitura 1.7.4 开始,您应该不会遇到此问题。这意味着您可能使用的是 1.7.4 之前的 Kitura 版本,如果您有指定旧 Kitura 版本的文件,则可能会发生这种情况。您可以删除该文件,或运行以更新它。NSRegularExpressionPackage.pinsswift package update

要验证所使用的 Kitura 包的实际版本,cd.build/checkouts/Kitura.git-XXXXXXXXXXX目录,在git tag那里运行并检查最新标签。

于 2017-08-14T06:59:25.293 回答