typescript ethers,无法从jsonMapabi

omvjsjqw  于 2022-11-18  发布在  TypeScript
关注(0)|答案(1)|浏览(113)

我正在尝试使用ethers导入合同。我收到一个错误:
..\node_modules@ethersproject\abi\src.ts\interface.ts:100定义只读(此,“片段”,abi.map((片段)=〉{
我的源文件如下所示:

import { ethers } from 'ethers';
import IUniswapV3PoolABI from '@uniswap/v3-core/artifacts/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.json' 
import env from 'dotenv'
env.config();

const poolAddress = '0x7109C674e52b14FCFb8A04ffe254f454f9C61C18'
const INFURA_URL_MAINNET = process.env.INFURA_URL_MAINNET
const provider = new ethers.providers.JsonRpcProvider(INFURA_URL_MAINNET);

const poolContract = new ethers.Contract(
    poolAddress,
    IUniswapV3PoolABI as any,
    provider
)

这些是我在package.json中的依赖项

"dependencies": {
  "@uniswap/sdk-core": "^3.0.1",
  "@uniswap/v3-sdk": "^3.8.2",
  "dotenv": "^16.0.0",
  "ethers": "^5.1.4"
},
"devDependencies": {
  "@ethersproject/experimental": "^5.4.0",
  "@typechain/ethers-v5": "^7.0.0",
  "@types/node": "^18.11.9",
  "typechain": "^5.0.0",
  "typescript": "^4.8.4"
}

**注意:**我也尝试过使用较新版本的软件包执行此操作,当我最初遇到错误时,我认为这可能是由于uniswap使用了旧版本的ABI文件,因此我从uniswap/interface克隆了依赖版本

如何创建以太契约?

qlvxas9a

qlvxas9a1#

原来Json比abi更重要,所以我需要调用json上的abi属性

const { abi: V3PoolABI } = IUniswapV3PoolABI

const poolContract = new ethers.Contract(
    poolAddress,
    V3PoolABI as any,
    provider
)

相关问题