Scala.js ExternalJSEnv不';在launcher网页中看不到javascript依赖项

Scala.js ExternalJSEnv不';在launcher网页中看不到javascript依赖项,scala.js,Scala.js,简单设置: 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-

简单设置:

  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-launcher-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对象:

package object mbostock {

 object d3 {...}

}
它也不能作为内部类工作:

object Appp extends JSApp {
  object d3 {...}
  override def main(): Unit = {...}
}

您可以让您的对象
d3
扩展
js.GlobalScope
,它将在全局JavaScript范围内查找(即
d3.js
将它放在哪里):

<>但是,在<代码> d3的情况下,您可能需要考虑< <代码> d3>代码>包对象本身扩展<代码> js.GualLabeS> <代码>:

package mbostock

package object d3 extends js.GlobalScope {
  def scale: js.Dynamic = ???
}

我强烈建议阅读,特别是关于的部分。

我正在研究这一点。很快:你能在
Appp
中添加
d3
的定义吗?你在类路径上有自己的
d3.js
吗?jsDependency解析仅按文件名执行。您似乎没有从jar中获得
d3.js
。如果您取消注释
d3.min.js
,它是否有效?将d3对象添加到Appp->
TypeError:undefined不是对象(评估'ScalaJS.g[“Appp$d3”][“scale”])
。。。我在
src/main/resources
中有d3.js。。。它实际存在于
target/scala-2.11/classes/d3.js
中。。。我尝试取消注释d3.min.js。。。我也用d3.min.js试用过它-它也不起作用。。。顺便说一句,如果我将jquery添加到jsDependencies中,它就可以工作了,它不能是Appp中的内部类,如果它在Appp.scala中,但与Appp对象处于同一级别,它就可以工作。。。它不作为内部类工作,也不在我最初使用它的
包对象
中工作这些发现非常痛苦,我希望它不会作为内部类工作,但我真的没想到它不会在
包对象
中工作。。。Scala能做的太多了,以至于所有的可能性都无法涵盖,这是不可能的:-)
object Appp extends JSApp {
  object d3 extends js.GlobalScope {
    def scale: js.Dynamic = ???
  }
  override def main(): Unit = {
    val fill = d3.scale.category20()
    println(fill)
  }
}
package mbostock

package object d3 extends js.GlobalScope {
  def scale: js.Dynamic = ???
}