設置簡單:ExternalJSEnv沒有看到發射器,網頁中的JavaScript依賴
lazy val root = project.in(file("."))
.settings(scalaJSSettings: _*)
.settings(utestJsSettings: _*)
.settings(persistLauncher := true)
.settings(persistLauncher in Test := false)
.settings(
name := "bindings",
version := "0.0.1-SNAPSHOT",
scalaVersion := "2.11.2",
libraryDependencies ++= Seq(
"org.scala-lang.modules.scalajs" %%% "scalajs-dom" % "0.6",
"com.lihaoyi" %%% "utest" % "0.2.3" % "test"
),
jsDependencies += "org.webjars" % "d3js" % "3.4.11"/"d3.js", //d3.min.js
autoCompilerPlugins := true,
test in Test := (test in(Test, fastOptStage)).value,
requiresDOM := true,
traceLevel := 0
)
phantomjs-發射-webpage.html包含真的是超級有效的東西:現在
<script type="text/javascript" src="/path/scalajs-bindings/target/scala-2.11/classes/d3.js"></script>
<script type="text/javascript" src="/path/scalajs-bindings/target/scala-2.11/bindings-fastopt.js"></script>
<script type="text/javascript">
// Phantom.js code launcher
// Origin: /path/scalajs-bindings/target/scala-2.11/bindings-launcher.js
window.addEventListener('load', function() {
((typeof global === "object" && global &&
global["Object"] === Object) ? global : this)["com"]["whatever"]["scalajs"]["Appp"]().main();
}, false);
</script>
,在瀏覽器中它可以打電話D3,我試圖與對應的HTML,但使用PhantomJS或者如果的NodeJS我做的fastOptStage::run
或fastOptStage::test
我得到
TypeError: undefined is not an object (evaluating 'd3["scale"]')
的代碼看起來是這樣的:
object Appp extends JSApp {
override def main(): Unit = {
val fill = d3.scale.category20()
println(fill)
}
}
我正在調查此問題。快點:你可以在'Appp'中添加'd3'的定義嗎? – gzm0 2014-09-01 12:49:15
你有沒有在自己的classpath上使用'd3.js'? jsDependency解析僅在一個按文件名的基礎上執行。看起來你沒有從jar中獲得'd3.js'。如果您取消註釋'd3.min.js',它會起作用嗎? – gzm0 2014-09-01 12:54:50
將d3對象添加到Appp - >'TypeError:undefined不是一個對象(評估'ScalaJS.g [「Appp $ d3」] [「scale」]')'...我在src/main中有d3.js/resources' ...它實際存在於'target/scala-2.11/classes/d3.js'中...我嘗試取消註釋'd3.min.js' ...我用'd3.min.js '也是 - 它也行不通... ... btw它與jQuery的工作,雖然,如果我添加到jsDependencies jQuery的,它只是工作 – lisak 2014-09-01 13:06:59