[Обновлять]
Мой друг Манфред Штайер выяснил причину ошибки. 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) ...
Вот Репро.
- git clone и установка пряжи
ng build --aot
Я понятия не имею, почему возникает эта ошибка. В настоящее время Angular CLI + WorkerPlugin не может включать TypeScript в рабочий модуль.
Я ищу решения. Пожалуйста, дайте мне знать, если у вас есть информация.