reactjs 模块“hardhat”没有导出的成员“ethers”

p8h8hvxi  于 2023-03-12  发布在  React
关注(0)|答案(5)|浏览(400)

当我想从hardhat导入ethers时,它会抛出我在标题中提到的错误,这里是一个完整版本

- error TS2305: Module '"hardhat"' has no exported member 'ethers'.
 
     2 import { ethers } from "hardhat";
                ~~~~~~

尽管我在以前的项目中也是这样使用它的,并且看到每个人都是这样做的

dly7yett

dly7yett1#

我不得不将这两行添加到tsconfig.json

"include": ["./src", "./scripts"],//only the "scripts" part.
  "files": ["./hardhat.config.ts"]
rbpvctlc

rbpvctlc2#

以下是我解决这个问题的方法:
1.我通过运行npm install --save-dev @nomiclabs/hardhat-ethers添加了“@nomiclabs/hardhat-ethers”依赖项

  1. import @nomiclabs/hardhat-ethers
  2. ethers现在可从“hre”获得,因为ethers被注入到hre中:代码片段如下:
import { expect } from 'chai'
import hre from 'hardhat'
import {Contract} from 'ethers'
import '@nomiclabs/hardhat-ethers'

describe('SocialRecovery', function () {
  let fooBar: Contract
  beforeEach(async function () {
    const foobar = await hre.ethers.getContractFactory('FooBar')
  })
})

原来@nomiclabs/hardhat-ethers是作为一个独立的插件存在的,它是从“hardhat”包“注入”到“hre”命名的导入中的。
我希望这能有所帮助,其他两个答案对我不起作用。
编程愉快,WAGMI!

pwuypxnk

pwuypxnk3#

您需要在根项目中创建tsconfig.json,其中包含

{
  "compilerOptions": {
    "target": "es2020",
    "module": "commonjs",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "skipLibCheck": true
  }
}
inkz8wg9

inkz8wg94#

他们可能没有明确地导出以太网,在文档中,它显示了以如下方式使用以太网:

import hre from "hardhat";

const Lock = await hre.ethers.getContractFactory("Lock");

https://hardhat.org/hardhat-runner/docs/guides/test-contracts

lp0sw83n

lp0sw83n5#

在我这边,这个问题通过运行ts-init得到了解决(原来我忘记初始化typescript编译器并在根目录中生成tsconfig.json文件)

相关问题