无法读取ether.js中未定义的属性(读取'toHexString')

回答 4 浏览 3798 2022-03-13

请不要评判,我不知道该做什么和怎么做 :)

我的代码: ether.js ( ^5.6.0)。

import { ThirdwebSDK } from '@3rdweb/sdk'
import { ethers } from 'ethers'

const sdk = new ThirdwebSDK(
  new ethers.Wallet(
    process.env.METAMASK_PRIVATE_KEY,
    ethers.getDefaultProvider(
      'https://rinkeby.infura.io/v3/'
    )
  ) 
)

bug 在此输入图片描述

porosh 提问于2022-03-13
4 个回答
#1楼 已采纳
得票数 4

如果你正在使用JavaScript并得到这个错误,那么你在导入dotenv时犯了一个错误。你正在使用".config"作为属性。把它当作一个方法来使用,如下

require("dotenv").config()

它将会起作用。

Sachin 提问于2022-06-13
#2楼
得票数 1

你可能遇到的另一个问题是你的 .env 所在的位置。确保你的.env和你的代码在同一个文件夹里。

Rodrigo Moreira 提问于2022-07-18
#3楼
得票数 0

你很可能弄错了环境变量。检查METAMASK_PRIVATE_KEY是否是正确的名称。因为不正确的话,它将抛出undefined,并且其中一个ethersjs库将尝试在undefined值上运行hexToString()方法,因此你会得到这个错误。

编辑:

你可能会忘记在你的代码中包含这个:

import {} from 'dotenv/config' 

// or if its not ESmodule 

require('dotenv').config()

如果没有这个导入,当你访问env变量的时候,也会抛出undefined

Kaneda 提问于2022-05-16
#4楼
得票数 0

我也遇到了这个问题。我为我的sol使用了一个构造函数,如下:

constructor(
        address vrfCoordinatorV2,
        uint256 entranceFee,
        bytes32 gasLane,
        uint64 subscriptionId,
        uint32 callbackGasLimit,
        uint256 interval
    )

在经历了很多挫折之后,我发现我的部署脚本的参数没有按照相同的顺序排好。这就是导致错误的原因。

"Cannot read properties of undefined (reading 'toHexString')"

在我的例子中,参数需要排列如下:

const args = [
        vrfCoordinatorV2Address,
        networkConfig[chainId]["raffleEntranceFee"],
        networkConfig[chainId]["gasLane"],
        subscriptionId,
        networkConfig[chainId]["callbackGasLimit"],
        networkConfig[chainId]["keepersUpdateInterval"],
    ];
Frits 提问于2022-09-15