2017-02-12 4 views
0

Я хочу загрузить простой проект с ScalaJS и Реагировать. Он строит с fastOptJS, то я открываю index.html с Chrome, и я получаю эту ошибку во время выполнения:ScalaJS с реактивом: не удается найти Реагировать во время выполнения

enter image description here

Видимо, РЕАКТ выполнения не доступна в браузере. В documentation он не упоминает о отдельном импорте 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) 
    } 

} 

ответ

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 в зависимости от вашего имени проекта.

+0

Я не ожидал, что это будет сложный. Я думал, что все они объединены каркасом :( – pietro909

+0

В этом случае хорошо отделить библиотеку React от scalajs-реагировать. Но да, есть некоторые грубые грани с scala.js - лично я просто помещаю зависимость в индекс. html. Все постепенно улучшается, например [возможность использования модулей commonJS] (https://www.scala-js.org/news/2016/10/17/announcing-scalajs-0.6.13/) –

Смежные вопросы