为了账号安全,请及时绑定邮箱和手机立即绑定

访问资源中的 scala.js 输出

访问资源中的 scala.js 输出

Qyouu 2023-04-27 10:39:40
我正在尝试使用 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) 找到。当浏览器从服务器请求它时,我必须做什么才能看到它?
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

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


        pathPrefix("resource") {

          extractUnmatchedPath { unmatched =>

            val resource = unmatched.toString()

            if (!resource.startsWith("/"))

              reject()

            else

              getFromResource(resource.substring(1))

          }

        }


查看完整回答
反对 回复 2023-04-27
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信