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
相关产品推荐
相关产品推荐

