【问题标题】:ScalaJs With Play Framework (Error in Tests)带有 Play 框架的 ScalaJs(测试中的错误)
【发布时间】:2016-07-25 18:44:19
【问题描述】:

我正在尝试将 ScalaJs 交叉构建项目与 Play Framework 2.5 一起使用。 当我尝试为 Client.scala 运行测试时遇到问题。 我得到的错误是 -

原因:TypeError: Cannot call method "appendChild" of null .

客户端sn-p

@JSExport
object DashboardClient extends js.JSApp {
@JSExport
def main(): Unit = {
val dashboard = new Dashboard
dom.document.getElementById("bodyContent").appendChild(dashboard.bodyFrag.render)
}

这个 bodyFrag 在另一个类中

 def bodyFrag =
div(
  div(
    `class` := "row border-bottom",
    div(
      `class` := "col-md-12",
      div(
        `class` := "col-md-2 image-alignment",
        img(width := "161", src := "/assets/images/mountain.jpg")
      ),
      div(`class` := "col-md-10")
    )
  ),
  div(
    `class` := "row border-bottom",
    div(
      `class` := "col-md-12",
      div(
        `class` := "col-md-12",
        h1(`class` := "text-center", "Dashboard")
      )
    )
  )
)

因此,当我尝试使用 utest 进行测试时,我得到了上述错误。 请帮忙。

P.S - 我对 Scala 和 ScalaJs 完全陌生。

【问题讨论】:

    标签: scala scala.js utest playscalajs


    【解决方案1】:

    嗯,这个错误似乎与bodyFrag 没有任何关系。 (或者 Play,甚至 Scala.js,真的。)这个错误实际上是说getElementById("bodyContent") 为空,这意味着它还不存在。我假设它是在 HTML 中声明的。

    这是浏览器代码中的常见陷阱。在尝试操作之前,您需要等待 DOM 准备好;你没有显示 HTML 页面,所以我不确定你是否这样做,但我怀疑不是。

    有多种方法可以等待 DOM 就绪——常见(但速度较慢)onload 方法和 jQuery 方法在in the jQuery documentation 中进行了讨论。作为一个快速解决方案,我建议将对您的 Scala.js 代码的调用封装在 window.onload 中。

    【讨论】:

      猜你喜欢
      • 2013-04-25
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 2014-12-23
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      相关资源
      最近更新 更多