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

使用useDapp+React开发DApp时遭遇ethers utils导出缺失错误求助

问题描述

开发区块链交互Web应用,技术栈为Brownie(Solidity框架)+ ReactJS(前端),使用useDapp连接钱包时出现编译错误:

多个@usedapp/core相关文件报错:

export 'utils' (imported as 'utils') was not found in 'ethers' (possible exports: AbiCoder, AbstractProvider, AbstractSigner, AlchemyProvider, AnkrProvider, BaseContract, BaseWallet, Block, BrowserProvider, CloudflareProvider, ConstructorFragment, Contract, ContractEventPayload, ContractFactory, ContractTransactionReceipt, ContractTransactionResponse, EnsResolver, ErrorFragment, EtherSymbol, EtherscanProvider, EventFragment, EventLog, FallbackProvider, FeeData, FetchCancelSignal, FetchRequest, FetchResponse, FixedNumber, Fragment, FunctionFragment, HDNodeVoidWallet, HDNodeWallet, Indexed, InfuraProvider, Interface, IpcSocketProvider, JsonRpcApiProvider, JsonRpcProvider, JsonRpcSigner, LangEn, Log, LogDescription, MaxInt256, MaxUint256, MessagePrefix, MinInt256, Mnemonic, N, Network, NonceManager, ParamType, PocketProvider, QuickNodeProvider, Result, Signature, SigningKey, SocketProvider, Transaction, TransactionDescription, TransactionReceipt, TransactionResponse, Typed, TypedDataEncoder, Utf8ErrorFuncs, VoidSigner, Wallet, WebSocketProvider, WeiPerEther, Wordlist, WordlistOwl, WordlistOwlA, ZeroAddress, ZeroHash, accessListify, assert, assertArgument, assertArgumentCount, assertNormalize, assertPrivate, checkResultErrors, computeAddress, computeHmac, concat, dataLength, dataSlice, decodeBase58, decodeBase64, decodeBytes32String, decodeRlp, decryptCrowdsaleJson, decryptKeystoreJson, decryptKeystoreJsonSync, defaultPath, defineProperties, dnsEncode, encodeBase58, encodeBase64, encodeBytes32String, encodeRlp, encryptKeystoreJson, encryptKeystoreJsonSync, ensNormalize, ethers, formatEther, formatUnits, fromTwos, getAccountPath, getAddress, getBigInt, getBytes, getBytesCopy, getCreate2Address, getCreateAddress, getDefaultProvider, getIcapAddress, getNumber, getUint, hashMessage, hexlify, id, isAddress, isAddressable, isBytesLike, isCallException, isCrowdsaleJson, isError, isHexString, isKeystoreJson, isValidName, keccak256, lock, makeError, mask, namehash, parseEther, parseUnits, pbkdf2, randomBytes, recoverAddress, resolveAddress, ripemd160, scrypt, scryptSync, sha256, sha512, solidityPacked, solidityPackedKeccak256, solidityPackedSha256, stripZerosLeft, toBeArray, toBeHex, toBigInt, toNumber, toQuantity, toTwos, toUtf8Bytes, toUtf8CodePoints, toUtf8String, verifyMessage, version, zeroPadBytes, zeroPadValue)

涉及文件:

  • ./node_modules/@usedapp/core/dist/esm/src/abi/multicall/constants.js
  • ./node_modules/@usedapp/core/dist/esm/src/abi/multicall2/constants.js
  • ./node_modules/@usedapp/core/dist/esm/src/constants/abi/index.js
  • ./node_modules/@usedapp/core/dist/esm/src/helpers/address.js

当前App.tsx代码:

import React from 'react';
import logo from './logo.svg';
import './App.css';
import { DAppProvider, ChainId } from "@usedapp/core";


function App() {
  return (
    <DAppProvider config={{ supportedChains: [ChainId.Goerli] }}>
      <div>
        Hello!
      </div>
    </DAppProvider>
  );
}

export default App;
解决建议

这个错误是useDapp版本与ethers版本不兼容导致的:ethers v6移除了utils导出模块,而旧版useDapp依赖ethers v5的utils功能。提供两种解决方式:

方式一:降级ethers到v5兼容版本

  1. 卸载当前ethers版本:
npm uninstall ethers
# 或 yarn remove ethers
  1. 安装ethers v5.7.2(旧版useDapp适配的稳定版本):
npm install ethers@5.7.2
# 或 yarn add ethers@5.7.2
  1. 清理缓存并重新安装依赖:
rm -rf node_modules package-lock.json # yarn环境替换为yarn.lock
npm install # 或 yarn install

方式二:升级useDapp到支持ethers v6的版本

若想保留ethers v6,需升级useDapp到支持v6的版本(v1.2.0及以上):

  1. 升级@usedapp/core:
npm install @usedapp/core@latest
# 或 yarn add @usedapp/core@latest
  1. 同步更新所有useDapp相关依赖(如@usedapp/react等),确保版本一致。
  2. 重新编译项目,检查是否有代码适配问题(比如新版useDapp中ChainId枚举可能有调整,需对应修改代码)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:20:47