Truffle部署Rinkeby网络报错:已配置network_id仍提示需指定
解决Truffle部署Rinkeby网络时的network_id错误
你的问题根源是网络配置的结构错误:在truffle-config.js中,你把ropsten和rinkeby的配置直接放在了module.exports的根层级,而没有嵌套到networks对象内部。Truffle只会读取networks对象里的网络配置,所以它根本没识别到你写的rinkeby配置,才会提示缺少network_id。
修正后的完整配置
const HDWalletProvider = require("@truffle/hdwallet-provider") const config = { alchemy: "0dba898c85ca47c2ac23471de88b0aaa", privateKey: 'e97b717ee45bcf2e35e4b281f42f947984b17abf0a5a7c7fa8c9950a36a0c33d' } module.exports = { contracts_build_directory: "./src/build", networks: { development: { host: "127.0.0.1", // Localhost (default: none) port: 8545, // Standard Ethereum port (default: none) network_id: "*", // Any network (default: none) }, ropsten: { provider: () => new HDWalletProvider( ['0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d'], `https://ropsten.infura.io/9fa16570ba4a46bca697d1e4140be14c`,// your infura API key ), network_id: "3", }, rinkeby: { provider: () => new HDWalletProvider( config.privateKey, `https://rinkeby.infura.io/v3/${config.alchemy}`,// your infura API key ), network_id: '4', } }, mocha: { }, // Configure your compilers compilers: { solc: { version: "0.8.17", // Fetch exact version from solc-bin (default: truffle's version) // docker: true, // Use "0.5.1" you've installed locally with docker (default: false) settings: { // See the solidity docs for advice about optimization and evmVersion optimizer: { enabled: true, runs: 200 }, evmVersion: "byzantium" } } } };
额外注意事项
- 部署时务必指定目标网络:执行
truffle migrate --network rinkeby - 检查你的Alchemy密钥是否匹配节点URL(当前配置里用了Infura的URL但填的Alchemy密钥,建议统一成Alchemy的节点URL:
https://eth-rinkeby.alchemyapi.io/v3/${config.alchemy}) - 确认
@truffle/hdwallet-provider版本与Truffle版本兼容,避免因版本不匹配导致的其他问题
内容的提问来源于stack exchange,提问作者kkpzj
相关产品推荐
相关产品推荐

