【问题标题】:Swift simple Kitura app localhost not running?Swift 简单的 Kitura 应用程序 localhost 没有运行?
【发布时间】:2019-07-10 16:07:32
【问题描述】:

第一次发帖!

我是一名学习 swift 的学生,我正在上一个相当大的速成课程。上次我的教授开始教我们如何进行简单的 get 和 post 请求,但我仍在追赶,显然还没有掌握一些基础知识。

这是我第一次使用 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()

谢谢!

【问题讨论】:

    标签: swift macos localhost kitura


    【解决方案1】:

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

    为了正确创建项目,您可以按照以下步骤操作:
    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”目标的依赖项列表:
    dependencies: ["Kitura"]),

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

    1. 编辑Package.swift 并将以下内容添加到“Jamie”包的依赖项中:
      .package(url: "https://github.com/IBM-Swift/HeliumLogger.git", .upToNextMinor(from: "1.7.1")),
    2. 编辑Package.swift 并将记录器添加到“jamie”目标的依赖项列表中,使其变为:
      dependencies: ["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()] Error listening on port 8080: Error code: -9992(0x-2708), Address already in use. Use server.failed(callback:) to handle

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

    【讨论】:

    • 是的,你是对的!这绝对是我的港口。我一定会马上把 HeliumLogger 扔进去。非常感谢! :)
    • 如果您发现最后一个错误,请按照前两个命令here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2017-05-03
    • 1970-01-01
    相关资源
    最近更新 更多