我们如何使用自动重新加载?
How can we use automatic reloading?
正在尝试使用自动模块重新加载功能(如 here 所述),但不幸的是文档并没有太大帮助。
说要使用配置,但是配置page是空的
我相信您可以将 "watch" 模块列表传递到 this page 的 embeddedServer()
调用中,但是当我这样做时,出现以下异常: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()
正在尝试使用自动模块重新加载功能(如 here 所述),但不幸的是文档并没有太大帮助。
说要使用配置,但是配置page是空的
我相信您可以将 "watch" 模块列表传递到 this page 的 embeddedServer()
调用中,但是当我这样做时,出现以下异常: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()