Ошибка ссылки при выполнении тестов с помощью ScalaJS Bundler

#scala #scala.js #scalajs-bundler

#scala #scala.js #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
  

Комментарии:

1. Не могли бы вы обновлять что-то одно за раз, вместо того, чтобы делать относительно большой скачок как в 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), выполнение тестов между каждым независимым обновлением.

Ответ №1:

Из кода похоже, что вы используете 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