如何使用 --constructor-args 参数 运行 Hardhat?
How do I run Hardhat with the --constructor-args parameter?
我正在尝试 运行 使用 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 运行 但如果是这种情况,我如何在部署时传递参数?
已更新以包含部署脚本
// 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);
});
```
const Token = await ethers.getContractFactory("Test01");
const token = await Token.deploy();
Token
(大写T)是ContractFactory
的一个实例。根据 docs,您可以将构造函数参数传递给 deploy()
方法。
例如,如果您的 Solidity 构造函数采用 bool
和 string
constructor(bool _foo, string memory _hello) {
}
这将是 JS 片段:
const token = await Token.deploy(true, "hello");
我正在尝试 运行 使用 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 运行 但如果是这种情况,我如何在部署时传递参数?
已更新以包含部署脚本
// 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);
});
```
const Token = await ethers.getContractFactory("Test01");
const token = await Token.deploy();
Token
(大写T)是ContractFactory
的一个实例。根据 docs,您可以将构造函数参数传递给 deploy()
方法。
例如,如果您的 Solidity 构造函数采用 bool
和 string
constructor(bool _foo, string memory _hello) {
}
这将是 JS 片段:
const token = await Token.deploy(true, "hello");