0

我想用ScalaJSReact引导一个简单的项目。它是用 构建的fastOptJS,然后我index.html用 Chrome 打开我的,我在运行时收到这个错误:

在此处输入图像描述

显然,React 的运行时在浏览器中不可用。在文档中它没有提到任何单独的 React 导入,只是build.sbt.

我真的不明白我做错了什么。

这是我的index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>The Scala.js Tutorial</title>
  </head>
  <body>
    <!-- Include Scala.js compiled code -->
    <script type="text/javascript" src="./target/scala-2.12/hello-fastopt.js"></script>
    <!-- Run tutorial.webapp.TutorialApp -->
    <script type="text/javascript">
      web.TutorialApp().main();
    </script>
  </body>
</html>

这是我的TutorialApp.scala

package web

import japgolly.scalajs.react._
import org.scalajs.dom
import scala.scalajs.js.JSApp
import scala.scalajs.js.annotation.JSExport
import japgolly.scalajs.react.ReactComponentB
import japgolly.scalajs.react.vdom.prefix_<^._

object TutorialApp extends JSApp {

  @JSExport
  def main(): Unit = {
    println("Hello world!")

    val App =
      ReactComponentB[Unit]("App")
        .render(_ => <.div("Hello!"))
        .build

    ReactDOM.render(App(), dom.document.body)
  }

}
4

1 回答 1

0

您要么全局需要它(通过<script>中的标签index.html),要么使用 webjars。

如果你想使用 webjars/jsDependencies 你可以查看https://github.com/tastejs/todomvc/blob/gh-pages/examples/scalajs-react/build.sbt

jsDependencies ++= Seq(
  "org.webjars.bower" % "react" % "15.2.1" / "react-with-addons.js" minified "react-with-addons.min.js" commonJSName "React",
  "org.webjars.bower" % "react" % "15.2.1" / "react-dom.js"         minified "react-dom.min.js" dependsOn "react-with-addons.js" commonJSName "ReactDOM"
)

另请注意,在index.html他们添加

<script src="generated/todomvc-jsdeps.js"></script>

确保页面上也加载了 JS 依赖项。您需要*-jsdeps.js根据您的项目名称更改名称。

于 2017-02-13T03:06:50.057 回答