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

Web3Modal升级后TypeScript项目Wagmi连接器类型不兼容报错

Web3Modal升级后Wagmi连接器类型不兼容问题解决

问题代码

import {
  EthereumClient,
  w3mConnectors,
  w3mProvider,
} from '@web3modal/ethereum';
import { polygonMumbai } from 'wagmi/chains';
import './index.css';
import { WagmiConfig } from 'wagmi';
import { createConfig, configureChains } from 'wagmi';

const projectId = window._env_.REACT_APP_WAGMI_CLIENT_ID as string;

export const chains = [polygonMumbai];
const { publicClient } = configureChains(chains, [w3mProvider({ projectId })]);
export const wagmiClient = createConfig({
  autoConnect: true,
  connectors: w3mConnectors({ chains, projectId }),
  publicClient,
});

const root = ReactDOM.createRoot(
  document.getElementById('root') as HTMLElement,
);

root.render(
  <React.StrictMode>
    <WagmiConfig config={wagmiClient}>
      <Provider store={store}>
        <BrowserRouter>
          <App />
        </BrowserRouter>
      </Provider>
    </WagmiConfig>
  </React.StrictMode>,
);

依赖版本

"dependencies": {
  "@types/react": "^18.2.8",
  "@types/react-dom": "^18.2.4",
  "@web3modal/ethereum": "2.6.2",
  "@web3modal/react": "2.6.2",
  "react": "^18.2.0",
  "react-scripts": "5.0.1",
  "typescript": "^5.1.3",
  "viem": "1.2.5",
  "wagmi": "1.3.3"
}

编译报错

Failed to compile.

TS2322: Type '(WalletConnectConnector | InjectedConnector)[]' is not assignable to type '(() => Connector<any, any>[]) | Connector<any, any>[] | undefined'.
  Type '(WalletConnectConnector | InjectedConnector)[]' is not assignable to type 'Connector<any, any>[]'.
    Type 'WalletConnectConnector | InjectedConnector' is not assignable to type 'Connector<any, any>'.
      Type 'WalletConnectConnector' is not assignable to type 'Connector<any, any>'.
        Property 'storage' is protected but type 'Connector<Provider, Options>' is not a class derived from 'Connector<Provider, Options>'.
    28 | export const wagmiClient = createConfig({
    29 |   autoConnect: true,
  > 30 |   connectors: w3mConnectors({ chains, projectId }),
       |   ^^^^^^^^^^
    31 |   publicClient,
    32 | });
    33 |

解决方案

1. 对齐依赖版本(推荐)

报错根源是viem和wagmi版本与@web3modal/ethereum不兼容:@web3modal/ethereum@2.6.2要求viem^1.3.0和wagmi^1.3.0,但当前使用的viem@1.2.5低于最低要求,导致类型定义冲突。

修改package.json中的依赖版本:

"dependencies": {
  // ...其他依赖不变
  "viem": "^1.3.10",
  "wagmi": "^1.4.0"
}

执行以下命令重新安装依赖:

rm -rf node_modules package-lock.json
npm install

2. 临时类型断言(不推荐)

如果暂时无法升级依赖,可以通过类型断言绕过类型检查,但会失去TypeScript的类型安全保障:

export const wagmiClient = createConfig({
  autoConnect: true,
  connectors: w3mConnectors({ chains, projectId }) as unknown as Connector<any, any>[],
  publicClient,
});

3. 补充Web3Modal完整初始化

之前代码导入了EthereumClient但未使用,需补全初始化步骤:

// 在创建wagmiClient后添加
export const ethereumClient = new EthereumClient(wagmiClient, chains);

然后在App组件中添加Web3Modal入口:

import { Web3Modal } from '@web3modal/react';

function App() {
  return (
    <>
      {/* 你的应用内容 */}
      <Web3Modal projectId={projectId} ethereumClient={ethereumClient} />
    </>
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:13:18