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

Vite & React构建后报错:Uncaught ReferenceError: require is not defined

问题

使用Vite + React构建项目,npm run dev运行正常,但npm run build后用Five Server打开生成的HTML文件,页面无内容,控制台报错:

Uncaught ReferenceError: require is not defined
    at index-079d3293.js:156:35879
    at index-079d3293.js:1:23
    at index-079d3293.js:180:36233

排查发现构建后的JS文件以模块形式引入,但内部包含require()语句。尝试移除<script>标签的type="module"属性,但文件存在export语句,此方法无效。

生成的HTML文件

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vite + React</title>
    <script type="module" crossorigin src="/assets/index-079d3293.js"></script>
    <link rel="stylesheet" href="/assets/index-45f2eabe.css">
  </head>
  <body>
    <div id="root"></div>
    
  </body>
</html>

package.json

{
  "name": "frontend",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "lint": "eslint src --ext js,jsx --report-unused-disable-directives --max-warnings 0",
    "preview": "vite preview"
  },
  "dependencies": {
    "@heroicons/react": "^2.0.17",
    "@reduxjs/toolkit": "^1.9.5",
    "react": "^18.2.0",
    "react-chat-engine-advanced": "^0.1.28",
    "react-dom": "^18.2.0",
    "react-dropzone": "^14.2.3",
    "react-redux": "^8.0.5",
    "react-router-dom": "^6.11.0"
  },
  "devDependencies": {
    "@types/node": "^18.16.3",
    "@types/react": "^18.0.28",
    "@types/react-dom": "^18.0.11",
    "@vitejs/plugin-react": "^4.0.0",
    "eslint": "^8.38.0",
    "eslint-plugin-react": "^7.32.2",
    "eslint-plugin-react-hooks": "^4.6.0",
    "eslint-plugin-react-refresh": "^0.3.4",
    "sass": "^1.62.1",
    "vite": "^4.3.2"
  }
}

vite.config.js

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

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: [{find: '@', replacement: path.resolve(__dirname, 'src')}]
  }
})
解决方案

问题根源是react-chat-engine-advanced依赖采用CommonJS格式编写,Vite默认将构建产物处理为ES模块,导致模块文件中保留了浏览器不支持的require语句。

方法一:强制预构建依赖

修改vite.config.js,添加optimizeDeps配置强制将该依赖转换为ES模块:

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

export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: [{find: '@', replacement: path.resolve(__dirname, 'src')}]
  },
  optimizeDeps: {
    include: ['react-chat-engine-advanced']
  }
})

执行以下命令清理缓存并重新构建:

rm -rf node_modules/.vite
npm run build

构建完成后建议使用vite preview预览产物,Five Server可能无法正确处理静态资源路径。

方法二:强制SSR外部化处理

如果方法一无效,可添加ssr配置强制将该依赖视为CommonJS处理:

export default defineConfig({
  // ...其他配置
  ssr: {
    noExternal: ['react-chat-engine-advanced']
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:23:18