【问题标题】:H88 Error: Invalid account: #0 for network - Expected string, received undefinedH88 错误:无效帐户:#0 网络 - 预期字符串,收到未定义
【发布时间】:2023-01-26 06:31:34
【问题描述】:

这是我的 hardhat.config.js -


module.exports = {
  solidity: "0.8.4",
  networks: {
    hardhat: {
      chainId: 1337
    },
    mumbai: {
      url: "https://rpc-mumbai.matic.today",
      accounts: [process.env.pk]
    },
    // polygon: {
    //   url: "https://polygon-rpc.com/",
    //   accounts: [process.env.pk]
    // }
  }
};

运行 npx hardhat test 时出现以下错误:

**Error HH8: There's one or more errors in your config file:
   Invalid account: #0 for network: mumbai - Expected string, received undefined**`

我的 hardhat.config.js 文件似乎有几个错误,但找不到。我正在使用 Nader Dabit 的全栈 web3 教程进行全栈 web3 开发。

【问题讨论】:

  • 您的process.env.pk 未定义。只要确保其设置正确即可。

标签: javascript config solidity hardhat


【解决方案1】:

正确的:

 mumbai: {
  url: "https://rpc-mumbai.matic.today",
  accounts: process.env.pk

不正确:

 mumbai: {
  url: "https://rpc-mumbai.matic.today",
  accounts: [process.env.pk] <-- remove the array

【讨论】:

    【解决方案2】:

    这里的问题是如何定义 accounts 数据类型。

    accountsHardhatNetworkAccountsUserConfig 类型。它包含account对象数组,类型为HardhatNetworkAccountUserConfig

    (请注意accounts 如何在此类型名称中包含“帐户”,而account 包含“帐户”)

    现在,这个account 是一个包含两个值的对象:private keybalance .您可以阅读更多相关信息here

    这是足够的背景知识。让我们进入代码。

    首先,这样定义accounts

    import {HardhatNetworkAccountsUserConfig} from "hardhat/types/config";
    import { ethers } from "ethers";
    
    const accounts: HardhatNetworkAccountsUserConfig = [
      {
        privateKey: process.env.pk!,
        balance: ethers.utils.parseEther('10000').toString()
      }
    ]

    注意'!'在process.env.pk 之后。添加它的原因在this StackOverflow thread 中有很好的解释。

    现在,使用下面的代码定义config

    module.exports = {
      solidity: "0.8.4",
      networks: {
        hardhat: {
          chainId: 1337
        },
        mumbai: {
          url: "https://rpc-mumbai.matic.today",
          accounts
        // polygon: {
        //   url: "https://polygon-rpc.com/",
        //   accounts
        // }
      }
    };

    npx hardhat node 现在应该可以正常工作了。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题并以不同的方式解决了它,因为它仍然说无效帐户(尽管我在 goerli testnet 上)。我发现您需要在私钥前面放一个 0x,所以我向 PRIVATE_KEY 变量添加了一个 OR 语句,如下所示:

      const PRIVATE_KEY =
          process.env.PRIVATE_KEY ||
          "0xfake1private2key3fake4private5key6fake7private8key"
      

      然后按如下方式使用该变量:

      networks: {
              goerli: {
                  url: GOERLI_RPC_URL,
                  accounts: [PRIVATE_KEY],
              },
      

      【讨论】:

        猜你喜欢
        • 2022-06-16
        • 1970-01-01
        • 2022-12-18
        • 2020-01-31
        • 1970-01-01
        • 2022-01-25
        • 2019-06-28
        • 2017-07-25
        • 2017-07-07
        相关资源
        最近更新 更多