javascript 错误:运行deploy.js时地址或ENS名称无效(参数=“名称”,值=未定义,代码=INVALID_ARGUMENT,版本=providers/5.5.3)

fivyi3re  于 2023-03-06  发布在  Java
关注(0)|答案(2)|浏览(267)

这是我的部署脚本中错误开始的位置

// 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不是函数

nkhmeac6

nkhmeac61#

所以我意识到这个问题比我想象的更常见,我发现很多人都在问关于堆栈溢出的问题,但是没有太多的答案,所以我希望这能指导其他人如何解决这个问题。注意:如果您收到错误消息键入Err:getContract不是一个来自你的部署脚本的函数,那么这是给你的。显然这是一个顽固的问题,这是按照this link上的说明。getContract没有被识别为一个有效的函数,Fabianschu以最好的方式解释了这个问题。

wlsrxk51

wlsrxk512#

在我的情况下,我已经尝试了很多东西,这解决了我的问题;
模块.exports --〉应该像这样导入import { something } from "somewhere"
导出默认值--〉应按如下方式导入import something from "somewhere"
请注意大括号是否存在!

相关问题