我们如何使用自动重新加载?

How can we use automatic reloading?

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

说要使用配置,但是配置page是空的

我相信您可以将 "watch" 模块列表传递到 this pageembeddedServer() 调用中,但是当我这样做时,出现以下异常:Module function provided as lambda cannot be unlinked for reload.

所以它不会让您将 lambda 作为应用程序模块传递,但是我不确定如何在访问 Application 方法(例如 routing()).

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

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()