Scala.js scalaks引导:未捕获引用错误:在scalajsenv.js:29中未定义导出
我尝试制作一个简单的scalajs+scalajsbootstrap应用程序,但是关于如何设置框架的文档很少。scalajs引导项目有一个示例,但是build.sbt文件非常大,它包含scalajs引导的源代码和示例本身 我尝试只使用bootstrap4示例创建一个新项目,但当我在浏览器上打开index.html页面时,它会抱怨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
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失败。有什么想法吗?