访问资源中的 scala.js 输出

我正在尝试使用 scala.js、scalatags、akka-http 和 mill 作为我的构建工具来构建应用程序服务器。一切顺利,直到浏览器尝试使用生成的 scala.js 代码查找脚本。这是成功构建并引用已编译的 scala.js 代码的 scalatags 代码(HiPage.js - 在 mill 中构建为 ScalaJSModule)。当它运行时,下面的 println 打印出来: file:/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) 找到。当浏览器从服务器请求它时,我必须做什么才能看到它?


Qyouu
浏览 88回答 1
1回答

动漫人物

不确定这是否是最好的方法,但我最终能够通过让脚本中的所有 src 引用以 /resource 开头然后编辑我的 akka-http 路由以包含以下内容来解决问题:&nbsp; &nbsp; &nbsp; &nbsp; pathPrefix("resource") {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; extractUnmatchedPath { unmatched =>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; val resource = unmatched.toString()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!resource.startsWith("/"))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reject()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getFromResource(resource.substring(1))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript