我们怎样才能使用自动重装?

时间:2017-09-14 00:06:14

标签: kotlin ktor

尝试使用自动模块重新加载功能(如here所述),但遗憾的是文档不太有用。

它表示使用配置,但配置page为空。

我相信您可以将“观看”模块列表传递到来自this pageembeddedServer()来电,但是当我这样做时,我会收到以下异常:Module function provided as lambda cannot be unlinked for reload

所以它不会让你传入一个lambda作为一个应用程序模块,但是我不知道在访问Application方法时如何避免这样做(例如routing()

最近有人能够自动重装吗? 如果是这样,怎么样?

1 个答案:

答案 0 :(得分:4)

Lambda可能具有包含函数的捕获状态,因此无法重新加载 - 无法恢复捕获的状态。您必须将应用程序提取到一个单独的函数中:

fun Application.module() {
   install(CallLogging)
   install(Routing) {
      get("/") {
        call.respondText("""Hello, world!<br><a href="/bye">Say bye?</a>""", ContentType.Text.Html)
      }
    …
   }
}

然后用函数引用启动它:

embeddedServer(Jetty, watchPaths = listOf("embedded"), module = Application::module).start()