You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hardhat运行Rinkeby网络脚本时触发HH8错误的问题排查求助

解决Hardhat Rinkeby网络配置的HH8错误

我一眼就看出问题出在你的.env文件格式上!dotenv包读取.env文件时根本不需要加process.env.前缀,你现在的写法会导致变量完全读不出来,才触发了HH8错误。

问题根源分析

你的.env文件里写了:

process.env.STAGING_ALCHEMY_KEY=https://eth-rinkeby.dotdotdot
process.env.PRIVATE_KEY=PRIVATE_KEY

这种格式是错的,dotenv只会识别纯键值对的写法,带process.env.前缀的键名会被当成普通字符串,导致Hardhat配置里的process.env.STAGING_ALCHEMY_KEY拿到的是undefined,这才出现了"Expected a value of type string"的报错。

修复步骤

  1. 修正.env文件格式,直接去掉所有process.env.前缀,改成标准键值对:
STAGING_ALCHEMY_KEY=https://eth-rinkeby.dotdotdot
PRIVATE_KEY=你的真实私钥内容
  1. 调整accounts字段格式(额外优化):
    你配置里的accounts字段现在是字符串类型,规范写法应该是数组,虽然Hardhat可能兼容,但改成数组能避免后续潜在问题:
    networks: {
      rinkeby: {
        url: process.env.STAGING_ALCHEMY_KEY,
        accounts: [process.env.PRIVATE_KEY], // 改成数组包裹私钥
      },
    },
    
  2. 验证变量加载(可选):
    可以在配置文件开头加两行打印代码,确认变量能被正确读取:
    require('@nomiclabs/hardhat-waffle');
    require('dotenv').config();
    
    // 测试打印,确认变量加载成功
    console.log("Alchemy Key:", process.env.STAGING_ALCHEMY_KEY);
    console.log("Private Key:", process.env.PRIVATE_KEY?.slice(0, 6) + "..."); // 只打印开头避免泄露
    
    module.exports = {
      // 你的原有配置...
    };
    
  3. 重新运行脚本,现在变量能正常加载,HH8错误应该就彻底消失了。

内容的提问来源于stack exchange,提问作者michy David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 23:22:37