Truffle-Migration schlägt fehl

Ich verwende testrpc. Beim Ausführen der Truffle-Migration erhalte ich die folgende Fehlermeldung:

/usr/local/lib/node_modules/truffle/node_modules/truffle-contract/contract.js:671
        throw new Error(this.contract_name + " has no network configuration for its current network id (" + network_id + ").");
        ^

Error: XXXTokenFactory has no network configuration for its current network id (1497979617513).

Meine truffle.js als folgenden Inhalt

// Allows us to use ES6 in our migrations and tests.
require('babel-register')

module.exports = {
  networks: {
    development: {
      host: 'localhost',
      port: 8545,
      network_id: '*' // Match any network id
    }
  }
}

Was vermisse ich? Würde mich über jede Hilfe freuen, die ich bekomme. Vielen Dank

haben Sie Ihren Vertrag in der Datei migrations/2_deploy_contracts.js definiert?
Ja, habe ich. Ich habe vergessen zu erwähnen, dass meine XXXTokenFactory eine Implementierung von Open Zeppelins MultisigWallet ist

Antworten (2)

Dies scheint aufzutreten, wenn Sie versuchen, einen Vertrag bereitzustellen , der vom Vertrag Aabhängt, Bbevor der Vertrag Btatsächlich bereitgestellt wurde.

Sie haben wahrscheinlich so etwas:

module.exports = function(deployer, network, accounts) {
  deployer.deploy(B);
  deployer.deploy(A, B.address);
};

Es ist im Wesentlichen eine Rennbedingung, da B.addresses wahrscheinlich nicht rechtzeitig für den zweiten deployer.deployAnruf bereit ist. Verwenden Sie also das Versprechen, deploydas wie folgt zurückgegeben wird:

module.exports = function(deployer, network, accounts) {
  deployer.deploy(B).then(function() {
    return deployer.deploy(A, B.address);
  });
};
Diese Lösung hat bei mir nicht funktioniert. bekomme immer den gleichen Fehler.
Dasselbe gilt für mich, bis ich die returnAussage bemerkte. Nachdem ich das hinzugefügt hatte, funktionierte es.

Ich bevorzuge diese Syntax:

module.exports = function(deployer, network, accounts) {

    deployer.then(async () => {
        await deployer.deploy(A);
        await deployer.deploy(B, A.address);
        //...
    });
};

da es viel besser lesbar ist, wenn Sie viele Verträge haben.

Siehe auch: https://github.com/trufflesuite/truffle/issues/501#issuecomment-373886205