使用Hardhat部署至Mumbai网络时遇HH8错误:Invalid account #0求助
问题描述
执行命令 npx hardhat run scripts/deploy.js --network mumbai 时触发HH8错误,提示:
Invalid account: #0 for network: mumbai - Expected string, received undefined
已尝试两篇Stack Overflow方案但无效,附上当前hardhat.config.js代码:
/* hardhat.config.js */ require("@nomiclabs/hardhat-waffle"); module.exports = { defaultNetwork: "hardhat", networks: { hardhat: { chainId: 1337 }, mumbai: { url: "https://rpc-mumbai.maticvigil.com", accounts: [process.env.privateKey] } }, solidity: { version: "0.8.4", settings: { optimizer: { enabled: true, runs: 200 } } } }
解决方法
这个错误的核心是process.env.privateKey没有读取到有效私钥值,导致accounts数组第一个元素为undefined,不符合Hardhat要求的字符串格式。按以下步骤修复:
配置环境变量读取私钥
- 在项目根目录新建
.env文件,写入你的Mumbai测试网钱包私钥:privateKey=你的64位十六进制私钥字符串(带0x前缀也可) - 在
hardhat.config.js顶部添加环境变量加载代码,并安装依赖:
执行命令安装依赖:require("@nomiclabs/hardhat-waffle"); require("dotenv").config(); // 新增该行,用于读取.env文件npm install dotenv --save-dev
- 在项目根目录新建
验证私钥格式
确保私钥是无多余空格、换行的纯字符串,长度为64位(带0x则为66位),避免复制时遗漏字符。临时测试方案(不推荐长期使用)
若不想用环境变量,可直接将私钥写入配置(注意绝对不要提交到公开代码仓库):mumbai: { url: "https://rpc-mumbai.maticvigil.com", accounts: ["你的完整私钥字符串"] }关于"账户0"的说明
错误中的#0指的是accounts数组的第一个元素,并非本地Hardhat生成的测试账户,不需要删除任何账户,只需确保该位置是有效的私钥字符串即可。
内容的提问来源于stack exchange,提问作者D6ix
相关产品推荐
相关产品推荐

