如何在Angular应用程序中捆绑OpenPGP.js内置Web Worker?

问题描述 投票:0回答:1

我正在使用openpgp.js库编写一个加密消息传递器,并从主线程上卸载加密操作,我必须使用内置的Web Worker。

要使用它,我必须在代码中指定工作者的文件名。

await openpgp.initWorker({ path: 'openpgp.worker.js' });

但是当我用ng build构建我的Angular应用程序时,它将输出一个包含所有应用程序代码的main.js文件,并指定此文件名将不方便。

由于使用了Angular框架,我相应地使用了TypeScript,并且要导入openpgp.js,我使用了类型定义库@types/openpgp

内置Web Worker的文件位于:https://github.com/openpgpjs/openpgpjs/blob/master/src/worker/worker.js

需要捆绑,以便与工作人员捆绑,和openpgp库本身的文件(由于[C​​0])应作为单独的文件输出并由应用程序代码使用。

这是我使用的代码:

worker requests openpgp.js file

要解决此问题,我将openpgp.jsimport { Injectable, OnDestroy } from '@angular/core'; import { initWorker, ..., destroyWorker } from 'openpgp'; @Injectable({ providedIn: 'root' }) export class CrypterService implements OnDestroy { constructor() { initWorker({ path: 'openpgp.worker.js' }); } generateKeys() { ... } encrypt(...) {...} decrypt(...) {...} ngOnDestroy() { destroyWorker(); } } 文件放入openpgp.js目录并按如下方式配置openpgp.worker.js

/public
javascript angular web-worker openpgp.js
1个回答
0
投票

我也在寻找解决方案。您找到我的使用方式了吗?

© www.soinside.com 2019 - 2024. All rights reserved.