Scala.js scalaks引导:未捕获引用错误:在scalajsenv.js:29中未定义导出

Scala.js scalaks引导:未捕获引用错误:在scalajsenv.js:29中未定义导出,scala.js,scalajs-bundler,Scala.js,Scalajs Bundler,我尝试制作一个简单的scalajs+scalajsbootstrap应用程序,但是关于如何设置框架的文档很少。scalajs引导项目有一个示例,但是build.sbt文件非常大,它包含scalajs引导的源代码和示例本身 我尝试只使用bootstrap4示例创建一个新项目,但当我在浏览器上打开index.html页面时,它会抱怨 uncaughtreferenceerror:scalajsenv.js:29未定义导出 这是我当前的设置: project/plugins.sbt addSbtPlu

我尝试制作一个简单的scalajs+scalajsbootstrap应用程序,但是关于如何设置框架的文档很少。scalajs引导项目有一个示例,但是build.sbt文件非常大,它包含scalajs引导的源代码和示例本身

我尝试只使用bootstrap4示例创建一个新项目,但当我在浏览器上打开index.html页面时,它会抱怨

uncaughtreferenceerror:scalajsenv.js:29未定义导出

这是我当前的设置:

project/plugins.sbt

addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.20")
addSbtPlugin("com.github.karasiq" % "sbt-scalajs-bundler" % "1.2.1")
addSbtPlugin("ch.epfl.scala" % "sbt-scalajs-bundler" % "0.13.0")
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
addSbtPlugin("ch.epfl.scala" % "sbt-scalajs-bundler" % "0.13.0")
build.sbt

enablePlugins(ScalaJSBundlerPlugin)

scalaVersion := "2.12.6"
libraryDependencies += "org.scala-js" %%% "scalajs-dom" % "0.9.7"
libraryDependencies += "com.github.karasiq" %%% "scalajs-bootstrap-v4" % "2.3.5"

npmDependencies in Compile += "jquery" -> "3.2.1"
npmDependencies in Compile += "bootstrap" -> "4.1.1"

mainClass in Compile := Some("com.karasiq.bootstrap4.test.frontend.BootstrapTestApp")
scalaJSUseMainModuleInitializer := true

scalaJSModuleKind := ModuleKind.CommonJSModule
version in webpack := "4.28.4"
emitSourceMaps := false
enablePlugins(ScalaJSBundlerPlugin)

scalaVersion := "2.12.8"
libraryDependencies += "org.scala-js" %%% "scalajs-dom" % "0.9.7"
libraryDependencies += "com.github.karasiq" %%% "scalajs-bootstrap-v4" % "2.3.5"

npmDependencies in Compile += "jquery" -> "3.2.1"
npmDependencies in Compile += "bootstrap" -> "4.1.1"

mainClass in Compile := Some("com.karasiq.bootstrap4.test.frontend.BootstrapTestApp")
scalaJSUseMainModuleInitializer := true

scalaJSModuleKind := ModuleKind.CommonJSModule
version in webpack := "4.28.4"
emitSourceMaps := false
这是scalajs-bootstrap4库的源代码和示例:

这是我完整的最小示例,由于
导出未定义
错误而失败:

如何修改plugins.sbt和/或build.sbt以使此项目正常工作


解决方案

project/plugins.sbt

addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.20")
addSbtPlugin("com.github.karasiq" % "sbt-scalajs-bundler" % "1.2.1")
addSbtPlugin("ch.epfl.scala" % "sbt-scalajs-bundler" % "0.13.0")
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
addSbtPlugin("ch.epfl.scala" % "sbt-scalajs-bundler" % "0.13.0")
build.sbt

enablePlugins(ScalaJSBundlerPlugin)

scalaVersion := "2.12.6"
libraryDependencies += "org.scala-js" %%% "scalajs-dom" % "0.9.7"
libraryDependencies += "com.github.karasiq" %%% "scalajs-bootstrap-v4" % "2.3.5"

npmDependencies in Compile += "jquery" -> "3.2.1"
npmDependencies in Compile += "bootstrap" -> "4.1.1"

mainClass in Compile := Some("com.karasiq.bootstrap4.test.frontend.BootstrapTestApp")
scalaJSUseMainModuleInitializer := true

scalaJSModuleKind := ModuleKind.CommonJSModule
version in webpack := "4.28.4"
emitSourceMaps := false
enablePlugins(ScalaJSBundlerPlugin)

scalaVersion := "2.12.8"
libraryDependencies += "org.scala-js" %%% "scalajs-dom" % "0.9.7"
libraryDependencies += "com.github.karasiq" %%% "scalajs-bootstrap-v4" % "2.3.5"

npmDependencies in Compile += "jquery" -> "3.2.1"
npmDependencies in Compile += "bootstrap" -> "4.1.1"

mainClass in Compile := Some("com.karasiq.bootstrap4.test.frontend.BootstrapTestApp")
scalaJSUseMainModuleInitializer := true

scalaJSModuleKind := ModuleKind.CommonJSModule
version in webpack := "4.28.4"
emitSourceMaps := false
完整示例:
根据我的经验,您需要:

  • 将以下行添加到
    项目/plugins.sbt
addSbtPlugin(“org.scala js“%”sbt scalajs“%”0.6.25)
addSbtPlugin(“ch.epfl.scala”%”sbt scalajs捆绑机“%”0.13.1)
  • build.sbt中启用
    ScalaJSPlugin
    ScalaJSBundlerPlugin
  • 将以下配置添加到
    build.sbt
scalaJSUseMainModuleInitializer:=true
scalaJSModuleKind:=ModuleKind.CommonJSModule
网页中的版本:=“4.28.4”
emitSourceMaps:=false
最后,运行
fastOptJS::webpack
创建打包的JS文件

请注意,打包的JS文件需要在
index.html
中引用,而不是编译的JS文件

我希望这能有所帮助。

对于像我这样使用的人,请参见:

问题
npm错误!错误:EACCES:permission denied
已通过删除我的~./npm文件夹并再次运行sbt解决。但是,在浏览器上打开index.html文件时,它仍然会失败,原因是
未捕获引用错误:scalajsenv.js:29未定义导出。它现在可以工作了;但是,请参见0.15.0(而不是0.13.0)中的插件ch.epfl.scala:sbt scalajs bundler失败。有什么想法吗?