angular - 使用导入的函数会导致网络工作者崩溃
问题描述
我有一个运行 angular 8+ 的电子应用程序。我正在调用从node_modules
. 如果我直接在我的组件中调用这个函数,它工作正常。如果我尝试在 Web Worker 中调用相同的函数,则构建失败。
// component file
const worker = new Worker('./dead-link-checker.worker', { type: 'module' });
worker.onmessage = ({ data }) => {
console.log(`page got message: ${data}`);
};
worker.postMessage({
domainName: this.domainName,
links: this.linksService.links
});
// webworker file
import { deadLinkChecker } from 'dead-link-checker';
import { tester } from './test';
addEventListener('message', async ({ data }) => {
console.log('in the workerer', data);
// Breaks everything
await deadLinkChecker(data.domainName, undefined, data.links);
// Works fine
tester();
postMessage('link checking complete', undefined);
});
错误:
ERROR in ./src/app/dead-link-checker.worker.ts (./node_modules/worker-plugin/dist/loader.js!./src/app/dead-link-checker.worker.ts)
Module build failed (from ./node_modules/worker-plugin/dist/loader.js):
ModuleNotFoundError: Module not found: Error: Can't resolve 'crypto' in 'C:\js_scripts\jordan-does-link-checking-electron\node_modules\aws-sign2'
at C:\js_scripts\jordan-does-link-checking-electron\node_modules\webpack\lib\Compilation.js:823:10
at C:\js_scripts\jordan-does-link-checking-electron\node_modules\webpack\lib\NormalModuleFactory.js:397:22
at C:\js_scripts\jordan-does-link-checking-electron\node_modules\webpack\lib\NormalModuleFactory.js:130:21
at C:\js_scripts\jordan-does-link-checking-electron\node_modules\webpack\lib\NormalModuleFactory.js:224:22
at C:\js_scripts\jordan-does-link-checking-electron\node_modules\neo-async\async.js:2830:7
at C:\js_scripts\jordan-does-link-checking-electron\node_modules\neo-async\async.js:6877:13
at C:\js_scripts\jordan-does-link-checking-electron\node_modules\webpack\lib\NormalModuleFactory.js:214:25
at C:\js_scripts\jordan-does-link-checking-electron\node_modules\enhanced-resolve\lib\Resolver.js:184:12
at C:\js_scripts\jordan-does-link-checking-electron\node_modules\enhanced-resolve\lib\Resolver.js:238:5
at eval (eval at create (C:\js_scripts\jordan-does-link-checking-electron\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:15:1)
at C:\js_scripts\jordan-does-link-checking-electron\node_modules\enhanced-resolve\lib\UnsafeCachePlugin.js:37:5
at C:\js_scripts\jordan-does-link-checking-electron\node_modules\enhanced-resolve\lib\Resolver.js:238:5
at eval (eval at create (C:\js_scripts\jordan-does-link-checking-electron\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:15:1)
at C:\js_scripts\jordan-does-link-checking-electron\node_modules\enhanced-resolve\lib\Resolver.js:238:5
at eval (eval at create (C:\js_scripts\jordan-does-link-checking-electron\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:27:1)
at C:\js_scripts\jordan-does-link-checking-electron\node_modules\enhanced-resolve\lib\DescriptionFilePlugin.js:42:38
在以角度使用nodejs脚本之前,我遇到过这种错误,我已经使用这样的解决方案来解决它。这似乎不是同一个问题,因为deadLinkChecker
如果我在 Web Worker 之外使用导入的函数,它可以正常工作。
解决方案
推荐阅读
- c# - 在 C# 中取消定义关键字
- google-app-engine - 如何在 google firestore 中实现唯一的用户名/电子邮件
- c# - Xamarin Forms 在 MVVM 中调整网格动画的大小
- javascript - 读取文本值并更改字符串值?
- docker - 在 dockerfile 中使用秘密
- node.js - 如何使用 node.js 为 spotify api 使用查询参数?
- r - 指数方程 ^ 和 exp 给出不同的答案
- azure - Azure DevOps 托管代理:如何构建到容器中,然后提取构建工件
- php - amadeus api faultstring Content-Length 缺少 stackoverflow
- c# - 如何确定导致 Always On 群集中异常的 SQL Server