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

Next.js集成WalletConnect Web3Modal与Wagmi的类型及运行错误问题

解决Next.js 13集成Web3Modal + Wagmi的两个问题

问题1:WagmiConfig类型不兼容错误

问题原因

你应该是把createWeb3Modal返回的完整对象直接传给了<WagmiConfig>的config属性。createWeb3Modal会返回包含queryClient的扩展配置对象,但<WagmiConfig>只接受纯wagmi Config类型,导致类型冲突。

解决方案

调用createWeb3Modal时,解构出纯config字段再传入:

import { createWeb3Modal } from '@web3modal/wagmi/react'
import { WagmiConfig, createConfig } from 'wagmi'
import { mainnet, sepolia } from 'wagmi/chains'
import { publicProvider } from 'wagmi/providers/public'

// 先创建wagmi基础配置
const wagmiBaseConfig = createConfig({
  chains: [mainnet, sepolia],
  transports: {
    [mainnet.id]: publicProvider(),
    [sepolia.id]: publicProvider(),
  },
})

// 解构出纯config传入WagmiConfig
const { config } = createWeb3Modal({
  wagmiConfig: wagmiBaseConfig,
  projectId: '你的WalletConnect项目ID',
  enableAnalytics: false,
})

export default function RootLayout({ children }) {
  return (
    <html lang="zh-CN">
      <body>
        <WagmiConfig config={config}>
          {children}
        </WagmiConfig>
      </body>
    </html>
  )
}

如果仍有类型告警,可手动指定类型:

import type { Config } from 'wagmi'

const { config } = createWeb3Modal(...) as { config: Config }

问题2:wagmi chains.js的export *不支持错误

问题原因

Next.js 13 App Router的客户端组件禁止使用export *导出的模块,而wagmi的chains包默认采用这种导出方式,触发了客户端边界的报错。

解决方案

放弃通配符导入所有链,改为命名导入你实际需要的链:

// 错误写法
import * as chains from 'wagmi/chains'

// 正确写法
import { mainnet, sepolia, goerli } from 'wagmi/chains'

之后在wagmi的createConfig中直接使用这些命名导入的链即可。

另外注意:如果你的Layout组件包含Web3Modal交互逻辑(比如连接按钮),需要在文件顶部加上'use client'指令——因为Next.js 13 App Router默认是服务器组件,而Web3Modal依赖客户端环境运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:53:24