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"的报错。
修复步骤
- 修正.env文件格式,直接去掉所有
process.env.前缀,改成标准键值对:
STAGING_ALCHEMY_KEY=https://eth-rinkeby.dotdotdot PRIVATE_KEY=你的真实私钥内容
- 调整accounts字段格式(额外优化):
你配置里的accounts字段现在是字符串类型,规范写法应该是数组,虽然Hardhat可能兼容,但改成数组能避免后续潜在问题:networks: { rinkeby: { url: process.env.STAGING_ALCHEMY_KEY, accounts: [process.env.PRIVATE_KEY], // 改成数组包裹私钥 }, }, - 验证变量加载(可选):
可以在配置文件开头加两行打印代码,确认变量能被正确读取: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 = { // 你的原有配置... }; - 重新运行脚本,现在变量能正常加载,HH8错误应该就彻底消失了。
内容的提问来源于stack exchange,提问作者michy David
相关产品推荐
相关产品推荐

