Kann nicht über Truffle in Rinkeby bereitgestellt werden - Eigenschaft 'bind' kann nicht gelesen werden

Ich verwende Trüffel: "^4.1.14" und Ganache-Cli-Version "^6.1.8". Wenn ich versuche, zu ganache cli network zu migrieren, funktioniert es ohne Probleme. Aber wenn ich versuche, nach Rinkeby zu migrieren, schlägt es immer fehl. Die Fehlermeldung sagt TypeError: Cannot read property 'bind' of undefined. Die problematische Zeile ist irgendwo tief im Webpack vergraben, und ich kann nicht zu diesem Skript gelangen, um es zu überprüfen oder es mit console.log zu protokollieren.

Der relevante Teil von truffle.js sieht so aus

rinkeby_infura: {
      provider: function() {        
        // using process.env.MNENOMIC would be safer, but this is test project
        const mnemonic = require('./.mnemonic');
        const apiKey = require('./.infura_api_key');
        return new HdWalletProvider(mnemonic, 'https://rinkeby.infura.io/' + apiKey);
      },
      network_id: 4,      
      gas: 4612388 // Gas limit used for deploys
    },

Der vollständige Stack-Trace der Ausnahme ist unten. Es hat wahrscheinlich etwas mit der Verbindung zu Rinkeby über den Provider zu tun, zumindest nach dem, was ich bisher gegoogelt habe. Aber ich bin nicht in der Lage, es zum Laufen zu bringen.

$ ./node_modules/.bin/truffle migrate --network rinkeby_infura

C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\packages\truffle-provider\wrapper.js:26
    var originalSendAsync = provider.sendAsync.bind(provider);
^
TypeError: Cannot read property 'bind' of undefined
    at Object.wrap (C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\packages\truffle-provider\wrapper.js:26:1)
    at Object.wrap (C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\packages\truffle-provider\index.js:7:1)
    at Object.create (C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\packages\truffle-provider\index.js:21:1)
    at Config.get [as provider] (C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\packages\truffle-config\index.js:165:1)
    at Object.detect (C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\packages\truffle-core\lib\environment.js:46:1)
    at C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\packages\truffle-core\lib\commands\migrate.js:91:1
    at finished (C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\packages\truffle-workflow-compile\index.js:53:1)
    at C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\packages\truffle-compile\index.js:314:1
    at C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\packages\truffle-compile\profiler.js:158:1
    at C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\~\async\dist\async.js:3888:1
    at C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\~\async\dist\async.js:473:1
    at replenish (C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\~\async\dist\async.js:1006:1)
    at iterateeCallback (C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\~\async\dist\async.js:995:1)
    at C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\~\async\dist\async.js:969:1
    at C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\~\async\dist\async.js:3885:1
    at C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\packages\truffle-compile\profiler.js:154:1
    at C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\~\async\dist\async.js:1140:1
    at C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\~\async\dist\async.js:473:1
    at iteratorCallback (C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\~\async\dist\async.js:1064:1)
    at C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\~\async\dist\async.js:969:1
    at C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\~\async\dist\async.js:1137:1
    at C:\src\personal\ens-registrar\node_modules\truffle\build\webpack:\packages\truffle-compile\profiler.js:133:1
    at FSReqWrap.oncomplete (fs.js:155:5)
Die Fehlermeldung besagt, provider.sendAsync.binddass Sie versuchen, bindvon zu lesen undefined, also ist sendAsynces undefiniert. Ich erinnere mich, dass web3 0.20 -> 1.0 von provider.sendAsync()zu geändert wurde, provider.send()also gibt es vielleicht einige Abhängigkeiten in Ihrem Projekt, die die falsche Version von web3 verwenden.

Antworten (1)

Meiner Meinung nach hat Truffle Probleme beim Öffnen Ihrer mnemonischen / Infura-API-Schlüsseldateien. Funktioniert es, wenn Sie anstelle der Variablen direkt die Mnemonik und den API-Schlüssel verwenden?

Außerdem empfehle ich Ihnen, dotenv und process.env zu verwenden (auch mit einem Testprojekt), es wäre einfacher, zukünftige Updates zu handhaben!

Ich weiß, dass die Verwendung in ENV-Variablen sicherer wäre, aber dies ist nur ein Testprojekt, und dies war einfacher einzurichten. Ich habe versucht, API-Schlüssel und Mnemonik direkt einzufügen, aber es hat nichts geändert