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

如何在Vite的Web Worker中使用JSX?遇@vitejs/plugin-react报错

解决Vite + Web Worker + @remote-ui/react的JSX预编译错误

问题原因

Vite的React插件默认仅在主线程模块中注入React运行时的预编译代码(preamble),Web Worker中的模块不会被自动处理,导致JSX转换时无法找到必要的运行时环境,抛出@vitejs/plugin-react can't detect preamble错误。

解决方案

1. 配置Vite React插件处理Worker脚本

修改项目根目录的vite.config.js,让@vitejs/plugin-react覆盖处理Worker相关文件:

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [
    react({
      // 包含所有JS/JSX文件,包括Worker后缀的脚本
      include: ['**/*.jsx', '**/*.js', '**/*.worker.jsx', '**/*.worker.js'],
      // 新版本插件可直接启用Worker处理
      // includeWorker: true
    }),
  ],
});

2. 在Worker脚本中显式引入React依赖

在Worker文件顶部手动导入React及@remote-ui/react核心模块,确保运行时环境被正确加载:

import React from 'react';
import { createRemoteRoot, createReactComponent } from '@remote-ui/react';

// Worker内的React渲染逻辑
const root = createRemoteRoot((message) => {
  // 自定义消息处理逻辑
});

root.render(
  <createReactComponent.Button>Worker内渲染的按钮</createReactComponent.Button>
);

3. 确保Worker的模块化导入方式

主线程中导入Worker时,使用Vite支持的模块化写法:

// 主线程代码
const worker = new Worker(new URL('./your-worker-file.jsx', import.meta.url), {
  type: 'module',
});

内容的提问来源于stack exchange,提问作者glocore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:45:40