【问题标题】:Accessing scala.js output in resources访问资源中的 scala.js 输出
【发布时间】:2021-01-22 16:09:13
【问题描述】:

我正在尝试使用 scala.js、scalatags、akka-http 和 mill 作为我的构建工具来构建应用程序服务器。一切顺利,直到浏览器尝试使用生成的 scala.js 代码查找脚本。这是成功构建并引用已编译的 scala.js 代码的 scalatags 代码(HiPage.js - 在 Mill 中构建为 ScalaJSModule)。当它运行时,下面的 println 会打印出来: 文件:/Users/nnovod/projects/lims/LIMS/resources/HiPage.js 这确实是我放置 scala.js 的 javascript 输出的地方

object HiPage {
  val boot =
    "Hi().main(document.getElementById('contents'))"
  println(getClass.getResource("/HiPage.js").toString) 
  val skeleton =
    html(
      head(
        script(`type`:="text/javascript", src:="/HiPage.js"),
        link(
          rel:="stylesheet",
          href:="https://cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"
        )
      ),
      body(
        onload:=boot,
        div(id:="contents")
      )
    )
}

这最终在浏览器中显示如下:

<html>
<head>
    <script type="text/javascript" src="/HiPage.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pure/0.5.0/pure-min.css"/>
</head>
<body onload="Hi().main(document.getElementById('contents'))">
    <div id="contents"></div>
</body>
</html>

这是我的 akka-http 路由...

    val route =
      path("hello") {
        get {
          complete(
            HttpEntity(
              ContentTypes.`text/html(UTF-8)`,
              HiPage.skeleton.render
            )
          )
        }
      }

浏览器永远找不到 HiPage.js(“加载资源失败:服务器响应状态为 404(未找到)”)。 HiPage.js 位于顶级资源目录中,由代码中的 println(getClass.getResource("/HiPage.js").toString) 找到。当浏览器从服务器请求它时,我需要做什么才能看到它?

【问题讨论】:

    标签: javascript scala akka-http scala.js mill


    【解决方案1】:

    不确定这是否是最好的方法,但我终于能够通过让脚本中的所有 src 引用以 /resource 开头然后编辑我的 akka-http 路由以包含以下内容来解决问题:

            pathPrefix("resource") {
              extractUnmatchedPath { unmatched =>
                val resource = unmatched.toString()
                if (!resource.startsWith("/"))
                  reject()
                else
                  getFromResource(resource.substring(1))
              }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-28
      • 2020-01-31
      • 1970-01-01
      相关资源
      最近更新 更多