Сейчас я пытаюсь добавить веб-мастера в свой проект Angular 9, используя Angular CLI 9.1.7. Этот веб-работник должен выполнить некоторые вычисления с использованием математики js 7.
Однако импорт математики js в веб-работник всегда приводит к следующей ошибке в консоли браузера. Если я не импортирую математику js, рабочий будет работать без проблем.
index.js:7 Uncaught ReferenceError: window is not defined
at Object../node_modules/seed-random/index.js (index.js:7)
at __webpack_require__ (bootstrap:19)
at Module../node_modules/mathjs/es/function/probability/util/seededRNG.js (seededRNG.js:1)
at __webpack_require__ (bootstrap:19)
at Module../node_modules/mathjs/es/function/probability/pickRandom.js (pickRandom.js:1)
at __webpack_require__ (bootstrap:19)
at Module../node_modules/mathjs/es/factoriesAny.js (factoriesAny.js:1)
at __webpack_require__ (bootstrap:19)
at Module../node_modules/mathjs/es/entry/pureFunctionsAny.generated.js (pureFunctionsAny.generated.js:1)
at __webpack_require__ (bootstrap:19)
Ссылочная строка
var GLOBAL = typeof global === 'undefined' ? window : global;
и является частью seed- random библиотека, используемая в математике js. Я знаю, что window
обычно не определено в веб-воркере, однако global
должно быть установлено, насколько я понимаю. В конфигурации веб-пакета, которую angular -devkit использует внутри, я обнаружил раздел follwing :
{
plugins: [new WorkerPlugin({
globalObject: false,
plugins: [getTypescriptWorkerPlugin(wco, workerTsConfigPath)],
})],
}
Там я уже пробовал установить globalObject
на self
или this
в моей локальной папке node_modules
, однако это не решило проблему. Я также не вижу в файле angular.json
возможности предоставить веб-работнику дополнительную конфигурацию для решения этой проблемы, поэтому я не уверен, что делать, чтобы эта работа работала. В документации math js я нашел пример использования его в веб-воркере, поэтому я предполагаю, что это также должно быть возможно с помощью Angular CLI.
Я создал GitHub repo с минимальным рабочим примером. Если вы запустите его с
npm install
npm start
, вы увидите описанную ошибку в консоли браузера.
Итак, мой вопрос: как я могу использовать математику js в Angular CLI веб-воркер?