【问题标题】:How can we use automatic reloading?我们如何使用自动重新加载?
【发布时间】:2018-02-22 19:32:57
【问题描述】:

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

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

我相信您可以将模块的“监视”列表传递给来自this pageembeddedServer() 调用,但是当我这样做时,我得到以下异常:Module function provided as lambda cannot be unlinked for reload

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

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

【问题讨论】:

    标签: kotlin ktor


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-05
      • 2016-04-23
      • 2017-05-10
      • 2014-03-16
      • 2015-06-28
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      相关资源
      最近更新 更多