Webpack 开启多线程后 React 组件报错咋回事?

Dev · 长春 阅读 12

我最近在项目里用 thread-loader 给 Babel 启用了多线程,结果一跑起来 React 组件就报错说“React is not defined”。明明没动组件代码,单独跑又没问题,是不是多线程环境下模块作用域出问题了?

这是我的一个简单组件:

import React from 'react';

const App = () => {
  return (
    <div>
      <h1>Hello Thread!</h1>
    </div>
  );
};

export default App;

webpack 配置里给 babel-loader 套了 thread-loader,难道是 worker 里没正确传递 import?求大佬指点!

我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
皇甫耘博
我一般直接在 babel-loader 前面加个 presets: ['@babel/preset-react'] 的配置,别光靠 thread-loader 自己猜——它默认不会自动处理 JSX 转译,React 变量当然找不着。正确写法是:

module: {
rules: [
{
test: \.jsx?$/,
use: [
{
loader: 'babel-loader',
options: {
presets: ['@babel/preset-react']
}
}
]
}
]
}
点赞
2026-02-27 16:04