[Обновлять]

Мой друг Манфред Штайер выяснил причину ошибки. WorkerPlugin создает дочерний компилятор веб-пакета для компиляции рабочего модуля без наследования родительских плагинов. Большое спасибо!



Я пытаюсь использовать Comlink с приложением Angular CLI в качестве эксперимента. А для добавления WorkerPlugin я использую ngx-build-plus.







дополнительная конфигурация веб-пакета очень проста.

const WorkerPlugin = require(‘worker-plugin’);
module.exports = {
  plugins: [new WorkerPlugin()]
};

WorkerPlugin позволяет ссылаться на рабочий скрипт как на модуль с { type: “module"}.

import * as Comlink from 'comlinkjs';
const LoggerProxy: any = Comlink.proxy(
  new (Worker as any)('./logger', { type: 'module' })
);

Logger — это простой класс в logger/logger.js файле.

export class Logger {
  log(value) {
    console.log(`value = ${value}`);
  }
}

А logger/index.js — это точка входа для воркера.

import * as Comlink from 'comlinkjs';
import { Logger } from './logger';
Comlink.expose(Logger, self);

Проблема с TypeScript в worker

Ошибка возникает, когда я использую файл TypeScript как часть рабочего модуля. logger/logger.ts вызывает ошибку, подобную приведенной ниже;

ERROR in ./src/app/logger/index.js (./node_modules/worker-plugin/dist/loader.js!./src/app/logger/index.js)
Module build failed (from ./node_modules/worker-plugin/dist/loader.js):
ModuleBuildError: Module build failed (from ./node_modules/@ngtools/webpack/src/index.js):
Error: The AngularCompilerPlugin was not found. The @ngtools/webpack loader requires the plugin.
    at Object.ngcLoader (/Users/laco/Works/angular-comlink/node_modules/@ngtools/webpack/src/loader.js:27:15)
...

Вот Репро.



  1. git clone и установка пряжи
  2. ng build --aot

Я понятия не имею, почему возникает эта ошибка. В настоящее время Angular CLI + WorkerPlugin не может включать TypeScript в рабочий модуль.

Я ищу решения. Пожалуйста, дайте мне знать, если у вас есть информация.