找不到Spring Boot + Scala.js客户端资源

时间:2019-01-23 14:11:17

标签: scala spring-boot scala.js sbt-web

我想以每个模块都是独立的SPA微服务的方式组合Java / Scala sbt子项目。由于历史原因,我只能使用Spring Boot(Tomcat)来提供文件。我选择Scala.js编写Javascript客户端。打包是在sbt插件的帮助下完成的。 build.sbt的相关部分是:

ThisBuild / scalaVersion := "2.12.6"

lazy val iamProject = ProjectRef(uri("https://github.com/iservport/iservport-iam.git"), "iam")

lazy val appCargo = (project in file("app-cargo")).enablePlugins(ScalaJSPlugin, ScalaJSWeb)

lazy val root = (project in file("."))
  .enablePlugins(JavaServerAppPackaging, UniversalDeployPlugin, AshScriptPlugin)
  .enablePlugins(DockerPlugin, SbtWeb)
  .settings(
    scalaJSProjects := Seq(appCargo),
    pipelineStages in Assets := Seq(scalaJSPipeline),
    name := "iservport-control",
    mainClass in Compile := Some("com.iservport.Application"),
...
  ).dependsOn(iamProject, appCargo)

在lib目录下展开universal:packageBin生成的应用程序zip时,我可以找到com.iservport.iservport-cargo-1.1.1.RELEASE.jar(模块),并且:

jar -tf com.iservport.iservport-control-1.1.1.RELEASE.jar | grep cargo

…
META-INF/resources/webjars/iservport-control/1.1.1.RELEASE/14848cb02339ea90f0c6/com/iservport/cargo/service/ShipmentService.scala
META-INF/resources/webjars/iservport-control/1.1.1.RELEASE/iservport-cargo-opt.js.map
META-INF/resources/webjars/iservport-control/1.1.1.RELEASE/14848cb02339ea90f0c6/com/iservport/cargo/service/ShipmentDocumentService.scala
META-INF/resources/webjars/iservport-control/1.1.1.RELEASE/iservport-cargo-opt.js
META-INF/resources/webjars/iservport-control/1.1.1.RELEASE/14848cb02339ea90f0c6/com/iservport/cargo/repository/ShipmentTypeRepository.scala
…

我测试了Spring Boot服务于webjar(例如d3.js)的功能,并且看到了它的正常运行。但是,我看不到罐子内类似资源的相同webjar映射工作:

META-INF/resources/webjars/iservport-control/1.1.1.RELEASE/iservport-cargo-opt.js

我尝试使用localhost:8443/webjars/iservport-control/1.1.1.RELEASE/iservport-cargo-opt.jslocalhost:8443/webjars/iservport-control /iservport-cargo-opt.js和其他变体,它们都是404。

如何将以上iservport-cargo-opt.js暴露给客户?

1 个答案:

答案 0 :(得分:0)

深入研究Scala.js文档后,我找到了解决方案:

localhost:8443/webjars/iservport-control/1.1.1.RELEASE/iservport-cargo-fastopt.js

我当时正在测试使用fastOptJS创建的本地实例,但是在生产中ScalaJs使用fullOptJS。