Как мы можем использовать автоматическую перезагрузку?
Попытка использовать функцию автоматической перезагрузки модуля (как описано здесь), но, к сожалению, документация не слишком полезна.
В нем сказано использовать конфигурацию, но страница конфигурации пуста.
Я полагаю, что вы можете перейти в список "смотреть" модулей в embeddedServer()
звоните с этой страницы, но когда я это сделаю, я получаю следующее исключение: Module function provided as lambda cannot be unlinked for reload
,
Так что он не позволит вам передать лямбду в качестве модуля приложения, но тогда я не уверен, как избежать этого при получении доступа к Application
методы (например, routing()
).
Кто-нибудь был в состоянии заставить автоматическую перезагрузку работать в последнее время? Если так, то как?
1 ответ
Лямбда может иметь захваченное состояние из содержащей функции и, следовательно, не может быть перезагружено - нет способа восстановить захваченное состояние. Вы должны извлечь приложение в отдельную функцию, например:
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()