部署NFT时Hardhat编译报错Expected a value of type HttpNetworkConfig求助
问题根源
你犯了非常基础的变量名拼写错误:
你在.env文件中定义的网络地址变量名为API_URL,但在hardhat.config.js的Ropsten网络配置里,url字段错误赋值为不存在的API_KEY变量。该变量未被定义,实际读取值为undefined,不符合Hardhat网络配置要求url为有效HTTP字符串的规则,因此抛出类型校验错误。
修复步骤
- 修正
hardhat.config.js中Ropsten网络的url字段变量名,将API_KEY改为API_URL - 确认
.env中的两个占位参数已经替换为你自己的实际值:- 把
your-api-key替换为Alchemy后台对应节点的实际API密钥 - 把
your-metamask-private-key替换为MetaMask导出的账户私钥,注意不要保留多余的空格
- 把
- 检查私钥前缀问题:如果你的MetaMask导出的私钥本身已经带有
0x前缀,直接填写即可;如果不带前缀,可以保留配置里的0x${PRIVATE_KEY}写法。
修正后配置参考
.env文件
API_URL = "https://eth-ropsten.alchemyapi.io/v2/替换为你自己的Alchemy API Key" PRIVATE_KEY = "替换为你自己的MetaMask私钥"
hardhat.config.js文件
/** * @type import('hardhat/config').HardhatUserConfig */ require('dotenv').config(); require("@nomiclabs/hardhat-ethers"); const { API_URL, PRIVATE_KEY } = process.env; module.exports = { solidity: { compilers: [ { version: "0.5.7" }, { version: "0.8.0" }, { version: "0.6.12" } ] }, defaultNetwork: "ropsten", networks: { hardhat: {}, ropsten: { url: API_URL, accounts: [PRIVATE_KEY] } }, }
额外提示
Ropsten测试网目前已经停止服务,你可以替换为Goerli、Sepolia等仍在运行的以太坊测试网进行部署。
内容的提问来源于stack exchange,提问作者user3055034
相关产品推荐
相关产品推荐

