4

尝试利用自动模块重新加载功能(如此所述),但不幸的是文档并没有太大帮助。

它说要使用配置,但配置页面是空的。

我相信您可以将模块的“监视”列表传递到此页面embeddedServer()的调用中,但是当我这样做时,会出现以下异常:.Module function provided as lambda cannot be unlinked for reload

因此它不会让您将 lambda 作为应用程序模块传递,但是我不确定如何在访问Application方法时避免这样做(例如routing())。

最近有没有人能够让自动重新加载工作?如果是这样,怎么做?

4

1 回答 1

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()
于 2017-09-14T08:09:18.563 回答