2016-12-13 2 views
0

私はscala.jsとjapgolly reactライブラリを使用しています。Scala.js + React: "sbt run"は "ターゲットコンテナはDOM要素ではありません"を示します。

スクリプトの本体部分の末尾にないか、要素ID名のスペルが間違っているために、同じ問題について多くのスレッドが発生しました。しかし、私のHTMLはうまくいて、は完全にレンダリングするです。できます。

私はまた、sbtを実行して、 ...をテストしました。 scala.js basic tutorialのベストプラクティス(ステップ6)に基づいています。

[error]  throw error; 
[error] ^
[error] Invariant Violation: _registerComponent(...): Target container is not a DOM element. 

参照は、単純なReactDOMにある:残念ながら実ページとは異なり、リターンを実行SBT

ReactDOM.render(<.div("foo"), document.getElementById("fooid")) 

私がするのに必要な、しかし、私は私のjsDependenciesでRuntimeDOMを持っていることをわかりません。そして私はnpm経由でjsdomもインストールしました。うまくいけばそれは問題ではない。

私は何をする必要がありますので、を実行すると、も同様に動作しますか? ありがとう

+0

Scala.jsプロジェクトで 'sbt run'を使用する理由を理解できません。説明できますか?私にとって、Scala.jsプロジェクトは基本的にブラウザで実行されるJavaScriptライブラリを生成することを意図しています。 – Yawar

+0

scala.jsのベストプラクティスに従って、これはテストのためのものです。 scala.jsの基本チュートリアルで説明したとおりです。 http://www.scala-js.org/tutorial/basic/ ...手順6 – TalBeno

答えて

1

idがfooidの要素がテスト環境に存在しないため、反作用エラーが発生しました。

val fooDiv = dom.document.createElement("div") 

fooDiv.id = "fooid" 

dom.document.body.appendChild(fooDiv) 
+0

ありがとうございました@invariant。それが原因だったかもしれませんが、私のhtmlの動作が述べられています。 IDは存在し、私のアプリはうまく描画されます。問題はsbtを実行するだけです。同様のシナリオについては、基本チュートリアルのステップ6を参照してください。http://www.scala-js.org/tutorial/basic/ ...ここでReactDom.renderは認識されません。 – TalBeno

+0

'sbt run'ではHTMLファイルは使用されません。 @invariantが示すように、コードを使用して重要な部分を作成する必要があります。 – sjrd

+0

私は参照してください。ありがとうございました! – TalBeno

関連する問題