无法读取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/'
)
)
)
4 个回答
#1楼
已采纳
得票数 4
如果你正在使用JavaScript并得到这个错误,那么你在导入dotenv时犯了一个错误。你正在使用".config"作为属性。把它当作一个方法来使用,如下
require("dotenv").config()
它将会起作用。
#2楼
得票数 1
你可能遇到的另一个问题是你的 .env 所在的位置。确保你的.env和你的代码在同一个文件夹里。
#3楼
得票数 0
你很可能弄错了环境变量。检查METAMASK_PRIVATE_KEY
是否是正确的名称。因为不正确的话,它将抛出undefined
,并且其中一个ethersjs库将尝试在undefined
值上运行hexToString()
方法,因此你会得到这个错误。
编辑:
你可能会忘记在你的代码中包含这个:
import {} from 'dotenv/config'
// or if its not ESmodule
require('dotenv').config()
如果没有这个导入,当你访问env变量的时候,也会抛出undefined
。
#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"],
];