You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala.js-Binding.scala项目sbt run报错:类名引发方法查找断言错误

Scala.js-Binding.scala中sbt run触发断言错误的排查记录

我最近在Scala.js-Binding.scala项目里执行sbt run时,碰到了一个特别诡异的断言错误,具体报错信息如下:

[info] Fast optimizing /Users/..../client/target/scala-2.12/cms-adapters-general-client-fastopt.js 
[error] java.lang.AssertionError: assertion failed: Cannot call lookupMethod(init___sc_Seq) on non Scala class sjs_js_Function 
[error] at scala.Predef$.assert(Predef.scala:219) 
[error] at org.scalajs.core.tools.linker.analyzer.Analyzer$ClassInfo.tryLookupMethod(Analyzer.scala:321)

这个错误是由一段按钮点击逻辑触发的,代码如下:

<button class="ui basic icon button" onclick={_: Event => 
  if (jQuery(".ui.form").form("is valid").asInstanceOf[Boolean]) { 
    val reader = new FileReader() 
    reader.readAsDataURL(excelInput.files(0)) 
    reader.onload = (_: UIEvent) => { 
      println("file loaded") 
    } 
  } 
}>Submit</button>

一开始我试着注释掉reader.onload = (_: UIEvent) => { println("file loaded") }这部分代码,结果项目居然能正常运行了。更奇怪的是,完全一模一样的代码,在我另一个项目的DemoRunJobDialog.scala文件里运行毫无问题。

我花了好一番功夫逐步排查,最后发现问题居然出在类名上!当我使用case class ImportJobDialog(socket: ClientWebsocket)这个类时,代码运行完全正常;但把类名改成case class ExcelImportJobDialog(socket: ClientWebsocket),就会立刻触发上面的断言错误。

目前我已经在Binding.scala的GitHub仓库提交了相关Issue(编号78),等待官方的进一步排查。

内容的提问来源于stack exchange,提问作者pme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:53:50