Я использую трюфель: «^ 4.1.14» и версию ganache-cli «^ 6.1.8». Когда я пытаюсь перейти на сеть ganache cli, все работает без проблем. Но когда я пытаюсь перейти на Rinkeby, это всегда терпит неудачу. В сообщении об ошибке говорится TypeError: Cannot read property 'bind' of undefined
. Проблемная строка скрыта где-то глубоко в веб-пакете, и я не могу получить доступ к этому сценарию, чтобы проверить его или выполнить console.log.
Соответствующая часть truffle.js выглядит так
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
},
Полная трассировка стека исключения приведена ниже. Вероятно, это как-то связано с подключением к Rinkeby через провайдера, по крайней мере, из того, что я до сих пор гуглил. Но я не могу заставить его работать.
$ ./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)
По моему мнению, у Truffle возникают проблемы с открытием ваших мнемонических файлов / ключевых файлов Infura API. Работает ли это, если вы используете непосредственно мнемонику и ключ API вместо переменных?
Также я рекомендую вам использовать dotenv и process.env (даже с тестовым проектом), так будет проще обрабатывать будущие обновления!
Исмаэль
provider.sendAsync.bind
что вы пытаетесь прочитатьbind
,undefined
поэтому оноsendAsync
не определено. Я помню, что web3 0.20 -> 1.0 изменился сprovider.sendAsync()
наprovider.send()
поэтому, возможно, в вашем проекте есть некоторые зависимости, которые используют неправильную версию web3.