Vercel部署Next.js项目时遇WagmiProviderNotFoundError错误求助
问题:Next.js部署Vercel时Wagmi Provider相关预渲染错误
我开发了一个包含登录注册功能的Next.js项目,添加钱包连接按钮后部署到Vercel时出现以下错误,怀疑是Wagmi Provider配置存在问题,恳请提供解决思路。
WagmiProviderNotFoundError: `useConfig` must be used within `WagmiProvider`. Docs: https://wagmi.sh/react/api/WagmiProvider.html Version: wagmi@2.5.13 at useConfig (file:///vercel/path0/node_modules/wagmi/dist/esm/hooks/useConfig.js:10:15) at useAccount (file:///vercel/path0/node_modules/wagmi/dist/esm/hooks/useAccount.js:8:20) at useConnectionStatus (file:///vercel/path0/node_modules/@rainbow-me/rainbowkit/dist/index.js:115:27) at ConnectButton (file:///vercel/path0/node_modules/@rainbow-me/rainbowkit/dist/index.js:5489:28) at Wc (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:68:44) at Zc (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:70:253) at Z (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:76:89) at $c (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:78:98) at Zc (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:71:145) at Z (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:76:89) { details: undefined, docsPath: '/api/WagmiProvider', metaMessages: undefined, shortMessage: '`useConfig` must be used within `WagmiProvider`.' } Error occurred prerendering page "/dashboard/wallet_connect". Read more: https://nextjs.org/docs/messages/prerender-error WagmiProviderNotFoundError: `useConfig` must be used within `WagmiProvider`. Docs: https://wagmi.sh/react/api/WagmiProvider.html Version: wagmi@2.5.13 at useConfig (file:///vercel/path0/node_modules/wagmi/dist/esm/hooks/useConfig.js:10:15) at useAccount (file:///vercel/path0/node_modules/wagmi/dist/esm/hooks/useAccount.js:8:20) at useConnectionStatus (file:///vercel/path0/node_modules/@rainbow-me/rainbowkit/dist/index.js:115:27) at ConnectButton (file:///vercel/path0/node_modules/@rainbow-me/rainbowkit/dist/index.js:5489:28) at Wc (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:68:44) at Zc (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:70:253) at Z (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:76:89) at $c (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:78:98) at Zc (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:71:145) at Z (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:76:89) Generating static pages (9/12) ✓ Generating static pages (12/12) > Export encountered errors on following paths: /dashboard/wallet_connect Error: Command "npm run build" exited with 1
解决思路
- 全局包裹WagmiProvider:确保所有使用Wagmi或RainbowKit组件的页面都被
WagmiProvider包裹。在Next.js的App Router中,直接在根layout.tsx里配置Provider;如果是Pages Router,就在_app.js里添加,避免仅在单个页面中局部配置导致预渲染时无法识别。 - 标记为客户端组件:在包含钱包连接按钮的组件顶部添加
'use client'指令,明确该组件仅在客户端运行,避免服务器预渲染时执行客户端专属逻辑。 - 动态导入关闭SSR:如果组件无法全局包裹Provider,使用Next.js的
dynamic导入组件并关闭SSR:import dynamic from 'next/dynamic' const ConnectButton = dynamic(() => import('../components/ConnectButton'), { ssr: false }) - 验证Wagmi配置正确性:确认
wagmi.config.js中的配置对象已正确初始化(包含链信息、连接器等),并正确传递给WagmiProvider。 - 检查版本兼容性:确保RainbowKit版本与wagmi@2.5.13兼容,避免版本不匹配导致的钩子调用异常。
内容的提问来源于stack exchange,提问作者Wise Bird
相关产品推荐
相关产品推荐

