【问题标题】:hardhat run with parameters带参数运行的安全帽
【发布时间】:2021-09-09 03:11:29
【问题描述】:

我需要从命令行使用 hardhat 运行特定的 ts 脚本,但我需要指定参数...类似于:

npx hardhat run --network rinkeby scripts/task-executor.ts param1 param2

--network rinkeby安全帽运行的参数
param1param2task-executor.ts 脚本的参数。
我找不到有关此问题的任何帖子,并且无法使其正常工作。

我也尝试定义一个安全帽任务并添加了这些参数,但如果我尝试执行它,我会得到:

Error HH9: Error while loading Hardhat's configuration.    
You probably tried to import the "hardhat" module from your config or a file imported from it.
This is not possible, as Hardhat can't be initialized while its config is being defined.

因为我需要在该特定任务中从hardhat 导入hreethers

有人知道如何完成我需要的吗??

非常感谢!!

【问题讨论】:

  • this 没有帮助?有了这个,你可以得到参数和一切。你能附上你的代码吗?看看哪里出了问题可能会有所帮助。

标签: javascript command-line parameters hardhat


【解决方案1】:

根据Hardhat

Hardhat 脚本对于不接受用户参数的简单事物以及与不太适合 Hardhat CLI 的外部工具(如 Node.js 调试器)集成很有用。

对于需要参数的脚本,您应该使用Hardhat Tasks

您可以在与 hardhat.config.ts 不同的文件中对任务进行编码。以下是使用文件 sampleTask.ts 中的位置参数的示例任务:

import { task } from "hardhat/config";

task("sampleTask", "A sample task with params")
  .addPositionalParam("param1")
  .addPositionalParam("param2")
  .setAction(async (taskArgs) => {
    console.log(taskArgs);
  });

记得把它导入到hardhat.config.ts

import "./tasks/sampleTask";

然后运行它:

npx hardhat sampleTask hello world 

它应该打印出来:

{ param1: 'hello', param2: 'world' }

您可以阅读有关任务here 的命名、位置和可选参数的更多信息。

如果需要使用hreethers,可以从setAction函数的第二个参数中得到hre

task("sampleTask", "A sample task with params")
  .addPositionalParam("param1")
  .addPositionalParam("param2")
  .setAction(async (taskArgs, hre) => {
    const ethers = hre.ethers;
  });

【讨论】:

  • 对不起...我阅读了安全帽文档...我在我的第一篇文章中说我试图实现安全帽任务和我得到的错误......并且似乎合乎逻辑地得到那个错误
【解决方案2】:

通常是这样工作的:

const hre = require('hardhat'); 
const { ethers } = hre; 

【讨论】:

    猜你喜欢
    • 2022-08-17
    • 2017-10-17
    • 2022-11-05
    • 2022-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2022-12-11
    相关资源
    最近更新 更多