在本地创建一个 Kitura 应用程序并成功编译和构建。但是一段时间后尝试部署到 heroku 时,我得到以下输出:
/tmp/build_cbc1c98480abd8ace78731a677031c0a/.build/checkouts/Kitura.git--211144618449703330/Sources/Kitura/RouterRequest.swift:56:33:错误:使用未解析的标识符'RegularExpression'remote:让regex = try RegularExpression( : pattern, options: [.caseInsensitive]) remote: ^~~~~~~~~~~~~~~~~~ remote: 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 由于超时而取消的地步。任何帮助都感激不尽。谢谢
最佳答案
首先,请注意您在 Mac 和 Linux 上遇到 Swift 的差异。您可能在 Mac 上检查过它,而 Heroku 运行 Linux。
其次,RegularExpression
在此拉取请求中被替换为 NSRegularExpression
https://github.com/IBM-Swift/Kitura/pull/1107 .从 Kitura 1.7.4 开始,您应该不会遇到此问题。这意味着您可能使用 1.7.4 之前的 Kitura 版本,如果您有指定旧 Kitura 版本的 Package.pins
文件,则可能会发生这种情况。您可以删除该文件,或运行 swift package update
来更新它。
要验证使用的 Kitura 包的实际版本,cd
到 .build/checkouts/Kitura.git-XXXXXXXXXXX
目录,运行 git tag
那里并检查最新的标签。
关于swift - Kitura Swift App 无法在 Heroku 上编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45666444/