2016-12-28 4 views
0

В документации для маршрутизатора scalajs-react, @japgolly cautions users of the library that starting URLs with '/' slashes requires additional server configuration.Довольно URL-адреса (без «#») на скайаз-реале. Приложение для воспроизведения

Чтобы разрешить довольно URL-адреса без #, до сих пор я пытался написать кетчуп все пути в файле Play routes как следующее:

# Home page 
GET /  com.xyz.controllers.Application.index(path: String = "") 

... 
# Catch-all route 
GET  /*path  com.xyz.controllers.Application.index(path: String) 

с пути индекса соответствия в Application.scala

def index(path: String = "") = Action { 
    Ok(views.html.index("Title")) 
} 

и, наконец, маршруты, объявленные с помощью RouterConfigDsl в переднем конце:

def create = Router(BaseUrl.until_#, RouterConfigDsl[Loc].buildConfig { dsl => 
    import dsl._ 

    (emptyRule 
    | staticRoute(root, DashboardLoc)     ~> render(filler("Dashboard")) 
    | staticRoute("purchase-orders", PurchaseOrdersLoc) ~> render(filler("Purchase Orders")) 
    | staticRoute("dashboard", DashboardLoc)   ~> render(filler("Dashboard")) 
    | staticRoute("items", ItemsLoc)     ~> render(ItemGallery()) 
    | staticRoute("customers", CustomersLoc)   ~> render(filler("Customers")) 
    | staticRoute("sales-orders", SalesOrdersLoc)  ~> render(filler("Sales Orders")) 
    | staticRoute("preorders", PreordersLoc)   ~> render(filler("Pre-orders")) 
    ).notFound(redirectToPage(DashboardLoc)(Redirect.Replace)) 
    .setTitle(l => s"XYZ | ${l.name}") 
}.renderWith(layout)) 

Запуск локально, у меня есть приложение для автоматического перенаправления на DashboardLoc по адресу localhost:9000/dashboard, а остальные статические маршруты работают при нажатии на них в веб-приложении, но при перезагрузке они не работают.

ответ

1

Как оказалось, проблема ведь использовалась BaseUrl.until# вместо BaseUrl.fromWindowOrigin_/. Теперь все маршруты работают так, как ожидалось.

Смежные вопросы