2017-09-14 35 views
3

試圖利用自動模塊重新加載功能(如描述here),但不幸的是文檔不太有用。我們如何使用自動重新加載?

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

我相信你可以在模塊的「觀察」名單傳遞到embeddedServer()呼叫從this page,但是當我做,我得到以下異常:Module function provided as lambda cannot be unlinked for reload

所以它不會讓你傳入一個lambda作爲應用程序模塊,但是我不知道如何在訪問Application方法(例如routing())時避免這樣做。

有沒有人能夠最近自動重新加載工作? 如果是這樣,怎麼樣?

回答

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() 
相關問題