Swift 简单的 Kitura 应用程序本地主机未运行?

标签 swift macos localhost kitura

第一篇文章!

我是一名学得很快的学生,正在参加一个相当大的速成类。我的教授上次开始教我们如何进行简单的获取和发布请求,但我还在跟进,很明显我还没有掌握一些基础知识。

这是我第一次使用 Kitura,也是第二次使用 Swift 编写代码。出于某种原因,当我使用 swift run ,我得到了我的打印和突然的“程序以退出代码结束:0”,而不是让本地主机在我的 8080 端口上运行来验证我对 localhost:8080/ 的响应.

有人可以帮我弄清楚我没有看到什么吗?或者还不了解服务器端 swift 和命令行?

print("Hello, world from Swift Main!")

import Kitura

//constant router
let router = Router()


//When the router gets a request (contains everything needed to interpret the request), the server will respond with (Hello World or whatever data)
router.get("/") { request, response, next in
    response.send("Hello world from router.get") //response
    next() //either end the route or go on to the next one
}

//What port for the server to run on
Kitura.addHTTPServer(onPort: 8080, with: router)


//Need to add routes before run(), either in different file or on main
Kitura.run()

谢谢!

最佳答案

您提供的代码是正确的,可能是您的项目结构不对。

为了正确创建项目,您可以按照以下步骤操作:
1. 创建一个新目录,例如jamie
2. 从该目录运行 swift package init --type=executable 以创建一个新项目。该项目将在目录名称后称为 jamie
3. 编辑 Sources/jamie/main.swift 并添加您的代码。
4. 编辑 Package.swift 并将以下内容添加到“Jamie”包的依赖项中:
.package(url: "https://github.com/IBM-Swift/Kitura.git", .upToNextMajor(from: "2.5.0")),
5. 编辑 Package.swift 并添加作为“jamie”目标的依赖项列表:
依赖项:["Kitura"]),

然后应该可以正确运行。如果没有,可能是因为您尝试使用的端口已被使用。如果您将记录器添加到您的项目,Kitura 将在无法绑定(bind)到端口时记录一条错误消息。为此,请按照以下步骤操作:

  1. 编辑 Package.swift 并将以下内容添加到“Jamie”包的依赖项中:
    .package(url: "https://github.com/IBM-Swift/HeliumLogger.git", .upToNextMinor(from: "1.7.1")),
  2. 编辑 Package.swift 并将记录器添加到“jamie”目标的依赖项列表中,使其变为:
    依赖项:["Kitura", HeliumLogger"]),
  3. 编辑 Sources/jamie/main.swift 并将以下内容添加到文件顶部:

    import LoggerAPI
    import HeliumLogger
    
    HeliumLogger.use(LoggerMessageType.info)
    

    如果端口已被使用,您将收到类似于以下内容的消息:

[2019-02-17T12:01:40.723Z] [ERROR] [Kitura.swift:139 start()] 监听 8080 端口时出错:错误代码:-9992(0x-2708),地址已经正在使用。使用 server.failed(callback:) 来处理

如果您还没有,那么加入 Ki​​tura slack 组织可能是值得的 http://slack.kitura.io

关于Swift 简单的 Kitura 应用程序本地主机未运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54727538/

相关文章:

arrays - 在 Swift 中,如何根据另一个数组对一个数组进行排序?

ios - 单击时如何删除按钮的选定状态?

macos - 为什么Docker主机卷安装不正确?

macos - 如何使用 FFmpeg 转换视频文件的音频编解码器?

Meteor - 使用公共(public) ip 访问应用程序

android - 如何通过 Android 手机访问我的本地主机?

objective-c - 无法在 SWIFT 中解包 NSAppleEventDescriptor

php - Swift - 查找附近运行应用程序的其他用户

ios - 如何通过蓝牙将文件从 iPhone 发送到 Mac

java - 本地主机 Java Applet 不断崩溃