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

部署至Vercel时npm run build报错退出1:EventEmitter导出异常

Vercel部署时EventEmitter导入失败问题

问题详情

本地运行正常,但部署到Vercel时构建报错,具体错误信息:

✓ 1403个模块已转换。
✓ 构建完成耗时4.88秒
"EventEmitter" 未被 "__vite-browser-external" 导出,被 "node_modules/@walletconnect/jsonrpc-provider/dist/esm/provider.js" 导入。
文件路径:/vercel/path0/onchain-roullete/node_modules/@walletconnect/jsonrpc-provider/dist/esm/provider.js:1:9
1: import { EventEmitter } from "events";
^
2: import { IJsonRpcProvider, isJsonRpcResponse, formatJsonRpcRequest, isJsonRpcError, getBigIntRpcId, } from "@walletco...
3: export class JsonRpcProvider extends IJsonRpcProvider {
构建期间出错:
RollupError: "EventEmitter" 未被 "__vite-browser-external" 导出,被 "node_modules/@walletconnect/jsonrpc-provider/dist/esm/provider.js" 导入。
at error (file:///vercel/path0/onchain-roullete/node_modules/rollup/dist/es/shared/node-entry.js:2245:30)
at Module.error (file:///vercel/path0/onchain-roullete/node_modules/rollup/dist/es/shared/node-entry.js:13604:16)
at Module.traceVariable (file:///vercel/path0/onchain-roullete/node_modules/rollup/dist/es/shared/node-entry.js:14029:29)
at ModuleScope.findVariable (file:///vercel/path0/onchain-roullete/node_modules/rollup/dist/es/shared/node-entry.js:12547:39)
at ChildScope.findVariable (file:///vercel/path0/onchain-roullete/node_modules/rollup/dist/es/shared/node-entry.js:7082:38)
at ClassBodyScope.findVariable (file:///vercel/path0/onchain-roullete/node_modules/rollup/dist/es/shared/node-entry.js:7082:38)

解决方案

错误根源是events是Node.js核心模块,浏览器环境不支持,Vite默认将其标记为外部依赖,但@walletconnect/jsonrpc-provider在浏览器构建中错误导入了它,可通过以下方式解决:

  • 配置Vite别名替换EventEmitter
    先安装浏览器兼容的EventEmitter实现:
npm install @ungap/events --save

然后在vite.config.js中添加别名配置:

import { defineConfig } from 'vite'

export default defineConfig({
  resolve: {
    alias: {
      events: '@ungap/events',
    },
  },
  optimizeDeps: {
    include: ['@ungap/events'],
  },
})
  • 使用Node Polyfill插件
    安装插件:
npm install vite-plugin-node-polyfills --save-dev

修改vite.config.js注入兼容实现:

import { defineConfig } from 'vite'
import { nodePolyfills } from 'vite-plugin-node-polyfills'

export default defineConfig({
  plugins: [
    nodePolyfills({
      include: ['events'],
    }),
  ],
})
  • 升级WalletConnect依赖
    旧版本的@walletconnect/jsonrpc-provider可能存在浏览器兼容缺陷,尝试升级到最新稳定版:
npm update @walletconnect/jsonrpc-provider

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:22:09