【问题标题】:How do I run Hardhat with the --constructor-args parameter?如何使用 --constructor-args 参数运行 Hardhat?
【发布时间】:2021-12-13 10:46:01
【问题描述】:

我正在尝试使用 Hardhat 运行脚本来部署具有构造函数参数的合约。当我运行npx hardhat run scripts\deploy.js --network rinkeby 时出现错误:

Error: missing argument: in Contract constructor (count=0, expectedCount=7, code=MISSING_ARGUMENT, version=contracts/5.5.0)

我尝试使用 --constructor-args 参数,但又遇到了另一个错误:

Error HH305: Unrecognized param --constructor-args

我发现的所有对 constructor-args 的引用都表明它只能作为 hardhat verify 的一部分使用,而不是 hardhat run 但如果是这种情况,我该怎么做部署时传递参数?

更新为包含部署脚本

// deploy.js

async function main() {
    const [deployer] = await ethers.getSigners();

    console.log('%c \n Deploying contracts with the account:', 'color:', deployer.address );

    console.log('%c \n Account balance:', 'color:', (await deployer.getBalance()).toString() );

    const Token = await ethers.getContractFactory("Test01");
    const token = await Token.deploy();

    console.log('%c \n Token address:', 'color:', token.address );
    
    
}

main()
    .then( () => process.exit(0) )
    .catch( (error) => {
        console.error(error);
        process.exit(1);
    });
    ```

【问题讨论】:

    标签: javascript solidity hardhat


    【解决方案1】:
    const Token = await ethers.getContractFactory("Test01");
    const token = await Token.deploy();
    

    Token(大写 T)是ContractFactory 的一个实例。根据docs,您可以将构造函数参数传递给deploy() 方法。

    例如,如果您的 Solidity 构造函数采用 boolstring

    constructor(bool _foo, string memory _hello) {
    }
    

    这将是 JS sn-p:

    const token = await Token.deploy(true, "hello");
    

    【讨论】:

    • 我遇到了同样的问题,我的构造函数在部署函数中确实有所有参数,但我不知道如何在命令行中传递构造函数参数。有什么帮助吗?
    • 如果我的构造函数包含一个 uint256,我将如何将该参数传递给 .deploy() ?
    • @SocaBlood 你可以传递它的string 值-deploy("1")。或 BigNumber 对象 - deploy(BigNumber.from(1))
    猜你喜欢
    • 2013-08-08
    • 2022-06-17
    • 2021-05-06
    • 2023-01-17
    • 2018-10-21
    • 2020-11-11
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多