Estoy usando trufa: "^4.1.14" y versión ganache-cli "^6.1.8". Cuando trato de migrar a la red ganache cli, funciona sin problemas. Pero cuando intento migrar a Rinkeby, siempre falla. El mensaje de error dice TypeError: Cannot read property 'bind' of undefined
. La línea problemática está enterrada en algún lugar profundo del paquete web, y no puedo acceder a ese script para inspeccionarlo o consolarlo.
La parte relevante de truffle.js se ve así
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
},
El seguimiento completo de la pila de la excepción se encuentra a continuación. Probablemente tenga algo que ver con la conexión a Rinkeby a través del proveedor, al menos por lo que he buscado en Google hasta ahora. Pero soy incapaz de hacer que funcione.
$ ./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)
En mi opinión, Truffle está teniendo problemas para abrir sus archivos de claves mnemotécnicas/API de Infura. ¿Funciona si usa directamente el mnemotécnico y la clave API en lugar de las variables?
También te recomiendo que uses dotenv y process.env (incluso con un proyecto de prueba), ¡sería más fácil manejar futuras actualizaciones!
ismael
provider.sendAsync.bind
que está tratandobind
de leerundefined
, por lo quesendAsync
no está definido. Recuerdo que web3 0.20 -> 1.0 cambió deprovider.sendAsync()
aprovider.send()
, por lo que quizás haya algunas dependencias en su proyecto que estén usando la versión incorrecta de web3.