You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 14:18:07