Ресурсы клиента Spring Boot + Scala.js не найдены

Я хочу объединить подпроекты Java/Scala sbt таким образом, чтобы каждый модуль представлял собой отдельный микросервис SPA. Я вынужден использовать 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)

Когда я расширяю почтовый индекс приложения, сгенерированный universal:packageBinв каталоге lib я могу найти 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 обслуживать веб-банки, например, d3.js, и я вижу, что это работает. Тем не менее, я не вижу ту же работу по отображению веб-jar для аналогичного ресурса в моем jar:

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.js, localhost:8443/webjars/iservport-control /iservport-cargo-opt.js и другие варианты, все они 404.

Как я могу выставить выше iservport-cargo-opt.js клиенту?

1 ответ

Покопавшись в документации по Scala.js, я нашел решение:

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

Я тестировал локальный экземпляр, созданный с помощью fastOptJS, но в производственной среде ScalaJs использует fullOptJS.

Другие вопросы по тегам