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

部署网站出现Uncaught ReferenceError: require is not defined错误求解决

解决部署后"require is not defined"报错问题

问题根源

本地开发正常但部署后报错,核心原因是浏览器环境不支持Node.js的require语法,而生产打包后的代码中残留了未转换的require调用。你的项目package.json已设置"type": "module"(ES模块模式),但某个依赖或插件引入了CommonJS规范的代码,导致Vite打包时未完全处理。

解决方案

1. 移除冲突插件vite-plugin-require

你安装的vite-plugin-require用于兼容CommonJS的require,但与Vite的ES模块模式存在冲突,先移除它:

npm uninstall vite-plugin-require

同时检查项目代码,将所有直接使用require的地方替换为ES模块的import语法。

2. 兼容第三方依赖中的CommonJS代码

部分第三方依赖(如@canvasjs/react-charts)可能内部仍使用require,可通过vite-plugin-commonjs处理:

npm install vite-plugin-commonjs --save-dev

在vite.config.js中添加配置:

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

export default defineConfig({
  plugins: [react(), commonjs()],
});

3. 优化Vite打包配置

调整build.commonjsOptions确保所有node_modules中的CommonJS模块被转换:

export default defineConfig({
  build: {
    commonjsOptions: {
      include: [/node_modules/],
    },
  },
});

4. 本地预演生产构建

修改配置后,先在本地模拟生产环境验证:

npm run build
npm run preview

确认无报错后再部署,避免反复线上调试。

内容的提问来源于stack exchange,提问作者Adil Mahmoud Rion

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:42:05