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

使用esbuild构建Electron前端React TS代码时遇React未定义错误

解决Electron+esbuild项目中"Uncaught ReferenceError: React is not defined"错误

问题原因

这个错误是因为JSX语法编译时依赖React对象,但代码或打包配置未正确引入React,导致运行时找不到全局的React变量。

解决方案

1. 确认React依赖已安装

先确保项目中已安装react和react-dom:

npm install react react-dom --save

2. 处理JSX的React导入

根据React版本选择对应方式:

  • React 17及以上:支持自动导入React,无需在每个JSX文件手动添加导入,但需配置esbuild开启该特性。
  • React 16及以下:必须在所有使用JSX的文件(比如app.tsx)顶部手动导入React:
    import React from 'react';
    import { createRoot } from 'react-dom/client';
    import App from './App';
    
    const root = createRoot(document.getElementById('root')!);
    export const renderApp = () => root.render(<App />);
    

3. 修改esbuild打包配置

在构建脚本中添加JSX相关配置,确保esbuild正确处理React依赖:

(async () => {
  await esbuild.build({
    entryPoints: ["dist/frontend/index.ts"],
    bundle: true,
    outfile: "dist/frontend/index.js",
    // React 17+ 推荐配置,自动处理React导入
    jsx: 'react-jsx',
    // 若使用React 16及以下,改用以下配置自动注入React导入
    // jsx: 'react',
    // jsxInject: "import React from 'react';",
    plugins: [
      esbuildPluginTsc({
        // force: true,
      }),
    ],
  });
})().then((d) => {
  console.log("built", d);
});

4. 检查tsconfig.json配置

确保tsconfig.json中的jsx选项与esbuild配置匹配:

{
  "compilerOptions": {
    // React 17+ 用这个
    "jsx": "react-jsx",
    // React 16及以下用这个
    // "jsx": "react",
    // 其他必要配置...
  }
}

5. 验证打包结果

重新执行构建脚本,启动Electron应用,确认错误是否消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:54:55