尝试使用自动模块重新加载功能(如here所述),但遗憾的是文档不太有用。
它表示使用配置,但配置page为空。
我相信您可以将“观看”模块列表传递到来自this page的embeddedServer()
来电,但是当我这样做时,我会收到以下异常:Module function provided as lambda cannot be unlinked for reload
。
所以它不会让你传入一个lambda作为一个应用程序模块,但是我不知道在访问Application
方法时如何避免这样做(例如routing()
)
最近有人能够自动重装吗? 如果是这样,怎么样?
答案 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()