React类组件中实现带模块导入的WebWorker的问题求助
React类组件中实现带模块导入的WebWorker的问题求助
各位大佬好,我在维护一个老的React类组件项目时,遇到了WebWorker相关的棘手问题,想请教下大家怎么解决:
我现在要实现的功能是:点击UI按钮后,通过WebWorker来处理exceljs和file-saver模块的逻辑,完成Excel文件的导出和下载。但只要在Worker代码里保留模块导入语句和对应的函数调用,整个逻辑就会失效,把这些代码注释掉后反而能正常运行。
先贴一下我写的worker相关代码:
// import { exportExcel } from '../module/util/excel.js'; // import { saveAs } from 'file-saver'; const loopworker = () => { onmessage = (e) => { console.log('Worker received message:', e.data); exportExcel({}); saveAs(); }; }; let code = loopworker.toString(); code = code.substring(code.indexOf('{') + 1, code.lastIndexOf('}')); const blob = new Blob([code], { type: 'application/javascript' }); const workerScript = new Worker(URL.createObjectURL(blob), { type: 'module' });
关于Webpack的配置,我已经添加了对应的loader规则:
{ use: [ { loader: 'worker-loader' }, { loader: 'babel-loader'} ] }
因为是老项目,全程用的都是类组件,没有用函数式组件的写法。我还尝试过web-worker这个插件,但问题依然没有解决。
现在的核心困惑就是:为什么只要在Worker中引入外部模块,整个逻辑就跑不起来?有没有大佬能指点下,在这种老的React类组件项目里,怎么让WebWorker正常支持模块导入呀?
内容来源于stack exchange
相关产品推荐
相关产品推荐

