Truffle

第二個契約沒有在遷移中部署

  • July 27, 2021
const Input = artifacts.require("Input");
const Register = artifacts.require("Register");

module.exports = function (deployer) {
 deployer.deploy(Input, "test_name")
 .then(async()=>{
   let instance = await Input.deployed();
   let name = instance.name();
   deployer.deploy(Register, name)
 })
};

在遷移期間嘗試使用它從第一個合約中獲取一個公共字元串變數作為第二個合約的建構子參數。

沒有錯誤,但第二個契約沒有部署……

請任何人回答這個問題。

問題是您不能Input.deployed()在部署的腳本中使用Input.

一種解決方法是在 處創建一個實例Input.address,例如await Input.at(Input.address)

module.exports = function (deployer) {
 deployer.deploy(Input, "test_name").then(async () => {
   let instance = await Input.at(Input.address)
   let name = await instance.name()
   deployer.deploy(Register, name)
 })
}

引用自:https://ethereum.stackexchange.com/questions/104012