访问资源中的scala.js输出

如何解决访问资源中的scala.js输出

我正在尝试使用scala.js,scalatags,akka-http和mill作为构建工具来构建应用程序服务器。一切顺利,直到浏览器尝试使用生成的scala.js代码查找脚本。这是成功构建并引用已编译的scala.js代码的scalatags代码(HiPage.js-在工厂中作为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)找到。当浏览器从服务器请求它时,我该怎么做才能使其显示

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?