运行 使用 ScalaJS Bundler 进行测试时遇到 ReferenceError

Facing ReferenceError while running tests with ScalaJS Bundler

我在从 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

从代码来看,您似乎正在将 node-js env 与 JSDom 一起使用。

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

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

这里是文档以获取更多信息:- https://www.scala-js.org/doc/project/js-environments.html