【问题标题】:Facing ReferenceError while running tests with ScalaJS Bundler使用 ScalaJS Bundler 运行测试时遇到 ReferenceError
【发布时间】:2021-02-11 16:18:16
【问题描述】:

我从sbt-scalajs 0.6.x 升级到 1.2.0 时遇到了这个问题,问题是:-

使用sbt-scalajs v0.6.26(和sbt-scalajs-bundler v0.14.0),我启用了jsdom 对测试的支持:

requireJsDomEnv in Test := true

测试套件运行良好。

但是有了sbt-scalajs v1.2.0(和sbt-scalajs-bundler v0.18.0),我也启用了jsdom对测试的支持:

requireJsDomEnv in Test := true

但这给了我以下错误:

[info] Writing and bundling the test loader
webpack:///./node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.js?:21
exports._globalThis = typeof globalThis === 'object' ? globalThis : window;
                                                                    ^
ReferenceError: window is not defined
    at eval (webpack:///./node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.js?:21:69)
    at Object../node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.js

但是,当我删除 requireJsDomEnv in Test := true 设置时,测试套件运行良好。我需要了解为什么会这样?我该如何解决?

我正在使用:

scala -> 2.13.3
Java -> OpenJDK 14.0.2

【问题讨论】:

  • 您能否一次升级一个东西,而不是在 sbt-scalajs 和 sbt-scalajs-bundler 中进行相对较大的跳跃,以隔离问题?从 (0.6.26, 0.14.0) 我建议以下升级路径: (0.6.26, 0.14.0) -> (0.6.33, 0.14.0) -> (0.6.33, 0.18.0) - > (1.2.0, 0.18.0),在每次独立升级之间运行测试。

标签: scala scala.js scalajs-bundler


【解决方案1】:

从代码看来,您正在使用带有 JSDom 的 node-js env。

所以要启用构建,您必须使用 JSDOMNodeJSEnv() 例如:-

requireJsDomEnv in Test := true
jsEnv in Test := new org.scalajs.jsenv.jsdomnodejs.JSDOMNodeJSEnv()

这里的文档了解更多信息:- https://www.scala-js.org/doc/project/js-environments.html

【讨论】:

    猜你喜欢
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2019-12-26
    • 1970-01-01
    • 2020-07-06
    • 2021-03-19
    相关资源
    最近更新 更多