这是我的部署脚本中错误开始的位置
// create VRFV2 Subscription
vrfCoordinatorV2Mock = await ethers.getContractAt("VRFCoordinatorV2Mock")
vrfCoordinatorV2Address = vrfCoordinatorV2Mock.address
const transactionResponse = await vrfCoordinatorV2Mock.createSubscription()
const transactionReceipt = await transactionResponse.wait()
subscriptionId = transactionReceipt.events[0].args.subId
// Fund the subscription
// Our mock makes it so we don't actually have to worry about sending fund
await vrfCoordinatorV2Mock.fundSubscription(subscriptionId, FUND_AMOUNT)
} else {
vrfCoordinatorV2Address = networkConfig[chainId]["vrfCoordinatorV2"]
subscriptionId = networkConfig[chainId]["subscriptionId"]
}
这是我的构造函数
address vrfCoordinatorV2,
uint64 subscriptionId,
bytes32 gasLane,
uint256 interval,
uint256 entranceFee,
uint32 callbackGasLimit
) VRFConsumerBaseV2(vrfCoordinatorV2) {
i_vrfCoordinator = VRFCoordinatorV2Interface(vrfCoordinatorV2);
i_subscriptionId = subscriptionId;
i_gasLane = gasLane;
i_interval = interval;
i_entranceFee = entranceFee;
i_callbackGasLimit = callbackGasLimit;
s_raffleState = RaffleState.OPEN;
s_lastTimeStamp = block.timestamp;
}
我尝试使用getContract而不是getContractAt,但收到另一个错误getContract不是函数
2条答案
按热度按时间nkhmeac61#
所以我意识到这个问题比我想象的更常见,我发现很多人都在问关于堆栈溢出的问题,但是没有太多的答案,所以我希望这能指导其他人如何解决这个问题。注意:如果您收到错误消息键入Err:getContract不是一个来自你的部署脚本的函数,那么这是给你的。显然这是一个顽固的问题,这是按照this link上的说明。getContract没有被识别为一个有效的函数,Fabianschu以最好的方式解释了这个问题。
wlsrxk512#
在我的情况下,我已经尝试了很多东西,这解决了我的问题;
模块.exports --〉应该像这样导入
import { something } from "somewhere"
导出默认值--〉应按如下方式导入
import something from "somewhere"
请注意大括号是否存在!