Javascript 访问资源中的scala.js输出
我正在尝试使用scala.js、scalatags、akka-http和mill作为构建工具来构建应用服务器。在浏览器尝试查找包含生成的scala.js代码的脚本之前,一切都进展顺利。这是成功构建的scalatags代码,它引用了编译后的scala.js代码(HiPage.js-在mill中作为ScalaJSModule构建)。运行时,下面的println会打印出来: 文件:/Users/nnovod/projects/lims/lims/resources/HiPage.js 这就是我放置scala.js的javascript输出的地方Javascript 访问资源中的scala.js输出,javascript,scala,akka-http,scala.js,mill,Javascript,Scala,Akka Http,Scala.js,Mill,我正在尝试使用scala.js、scalatags、akka-http和mill作为构建工具来构建应用服务器。在浏览器尝试查找包含生成的scala.js代码的脚本之前,一切都进展顺利。这是成功构建的scalatags代码,它引用了编译后的scala.js代码(HiPage.js-在mill中作为ScalaJSModule构建)。运行时,下面的println会打印出来: 文件:/Users/nnovod/projects/lims/lims/resources/HiPage.js 这就是我放置sc
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>
浏览器无法找到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))
}
}
pathPrefix("resource") {
extractUnmatchedPath { unmatched =>
val resource = unmatched.toString()
if (!resource.startsWith("/"))
reject()
else
getFromResource(resource.substring(1))
}
}