You need to enable JavaScript to run this app. 升级ScalaJS1.4.0与scalatags0.9.3后测试报createRange非函数如何解决
优惠活动
大模型
产品
解决方案
定价
更多

升级ScalaJS1.4.0与scalatags0.9.3后测试报createRange非函数如何解决

问题背景

在将Scala.js从0.6.x版本升级到1.4.0版本的工作中,同步将scalatags依赖从0.6.7版本升级到0.9.3版本,执行测试用例时抛出如下异常:

scala.scalajs.js.JavaScriptException: TypeError: $m_Lorg_scalajs_dom_package$(...).document__Lorg_scalajs_dom_raw_HTMLDocument(...).createRange is not a function
问题定位进展
  • 通过代码链路追踪,定位到异常触发点为scalatags.JsDom模块下对应scalatags代码的第141行,问题代码有对应留存的参考截图。
  • 单独提取createRange调用逻辑编写独立测试用例,复现了完全一致的报错:测试逻辑中"creating range"日志正常打印,但后续"created range"日志未输出,抛出相同异常,已知createRange()本身是浏览器原生函数。
  • 检索createRange is not a function相关问题时,发现大量同类报错都出现在非Scala.js技术栈的测试场景中,不少解决方案是通过monkey-patch方式为document对象自定义实现createRange方法,我对这类方案的合理性存疑。
排查方向推测与核心疑问
  • 最初怀疑问题出在scalatags依赖本身,之后猜测是Scala.js库的兼容问题,现在进一步推测问题根源可能和Node.js运行环境有关,但暂未检索到明确的相关佐证。
  • 核心疑问:后续排查应从哪些方向切入,是否真的需要通过monkey-patch方式为document补全createRange方法?独立测试环节也有对应留存的参考截图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 03:06:04