new Worker () будет упакован, только если передан String - PullRequest
1 голос
/ 09 июня 2019

Я пытаюсь веб-работникам запустить скрипт анализа данных, который отнимает много времени, в моем приложении Angular 8, но у меня возникают некоторые проблемы при объединении работника. Я ищу помощь, чтобы выяснить, чего мне не хватает.

Я создал нового работника для своего проекта, используя схемы, включенные в Angular-CLI 8.0.2:

ng g webWorker suggestions --project=my-project

Создает новые suggestions.worker.ts и tsconfig.worker.ts и обновляет мои tsconfig.app.json, angular.json и package.json. Они выглядят хорошо для меня, но я могу предоставить детали, если это необходимо.

Я переместил suggestions.worker.ts в ту же папку, что и служба, которая будет создавать экземпляр работника. Функция создания экземпляра работника выглядит следующим образом:

async calculateSuggestions<T>(
    data: T[]
): Promise<Suggestions<T>> {
    const worker = new Worker('./suggestions.worker', {
      type: 'module',
    });

    const result = new Promise((resolve, reject) => {
      worker.onmessage = ({ data }) => {
        resolve(data);
      };

      worker.onerror = ({ error }) => {
        reject(error);
      };
    }) as Promise<Suggestions<T>>;

    worker.postMessage({
      data: data
    });

    return result;
}

Однако, когда я строю свой проект, появляется следующее предупреждение и ошибка:

WARNING in new Worker() will only be bundled if passed a String.

ERROR in chunk suggestions-suggestions-module
suggestions-suggestions-module.js
{..} \node_modules\@ngtools\webpack\src\index.js! {..} \src\app\extractor\
No template for dependency: ConstDependency

Я предполагаю, что я неправильно создаю экземпляр Worker, что приводит к сбою процесса связывания.

Предупреждение указывает на то, что я должен передать String конструктору Worker, но я уже делаю это.

Кроме того, путь после восклицательного знака в строке 3 ошибки на самом деле находится на две папки выше, где я храню свою службу и рабочие файлы. Может быть, это подсказка?

Любые предложения будут высоко оценены!

1 Ответ

1 голос
/ 24 июня 2019

Я решил эту проблему путем понижения до angular-cli@8.0.1. Все еще не уверен насчет основной причины проблемы.

...