Тестирование в сети ropsten с помощью truffle.js дает мне эту ошибку

root@ubuntu-4gb-nyc3-01:~# truffle migrate --network ropsten (узел: 14686) UnhandledPromiseRejectionWarning: отклонение необработанного обещания (идентификатор отклонения: 2): TypeError: this.provider.sendAsync не является функцией (узел: 14686 ) [DEP0018] Предупреждение об устаревании: отклонение необработанных обещаний считается устаревшим. В будущем отказы от обещаний, которые не будут обработаны, завершат процесс Node.js с ненулевым кодом выхода. Использование сети «ropsten».

Выполнение миграции: 1_initial_migration.js

После этого он выходит на root@ubuntu-4gb-nyc3-01:~# без запуска 2_deploy_contracts.js

Мой truffle.js выглядит следующим образом:

**var bip39 = require("bip39");
var hdkey = require('ethereumjs-wallet/hdkey');
var ProviderEngine = require("web3-provider-engine");
var WalletSubprovider = require('web3-provider-engine/subproviders/wallet.js');
var Web3Subprovider = require("web3-provider-engine/subproviders/web3.js");
var Web3 = require("web3");
// Get our mnemonic and create an hdwallet
var mnemonic = "twelve words we can find in metamask settings reveal seed words blabla";
var hdwallet = hdkey.fromMasterSeed(bip39.mnemonicToSeed(mnemonic));
// Get the first account using the standard hd path.
var wallet_hdpath = "m/44'/60'/0'/0/";
var wallet = hdwallet.derivePath(wallet_hdpath + "0").getWallet();
var address = "0x" + wallet.getAddress().toString("hex");
console.log(address);
var providerUrl = "https://ropsten.infura.io/mytoken";
var engine = new ProviderEngine();
engine.addProvider(new WalletSubprovider(wallet, {}));
engine.addProvider(new Web3Subprovider(new Web3.providers.HttpProvider(providerUrl)));
engine.start(); // Required by the provider engine.
module.exports = {
  networks: {
    ropsten: {
      network_id: 3,    // Official ropsten network id
      provider: engine, // Use our custom provider
      from: address,     // Use the address we derived
      gas: 3000000
    }
  },
  rpc: {
    // Use the default host and port when not using ropsten
    host: "my-server-ip-goes-here",
    port: 8545
  }
  };**

Где я могу найти эту функцию.provider.sendAsync?

Я использую узел: v8.2.1 и Ubuntu 16.04.

Я действительно застрял с этим. Любая помощь будет оценена по достоинству. Спасибо

Ответы (2)

У меня была такая же ошибка. Это было решено после того, как я установил старую версию библиотек npm. Я не думаю, что это идеальное решение.

$ npm install ethereumjs-wallet bip39 web3-provider-engine@8.6.1 web3@0.18.4 zeppelin-solidity --save

вы изменили это значение var mnemonic = "двенадцать слов, которые мы можем найти в настройках метамаски, показывают исходные слова blabla"; на вашу фразу METAMASK

хорошо, я вижу. мне нужно менять мнемоники? Вы имеете в виду, что я должен использовать фактическое расширение метамаски для Chrome, а затем получить оттуда значение? Мне жаль. Я запутался.
да, будет создан ваш контакт по первому адресу eth на метамаске
Я создал мнемонику из 12 слов из плагина метамаски из хрома. а затем попытался снова развернуть контракт в ropsten после обновления truffle.js с новой мнемоникой. Снова та же ошибка: UnhandledPromiseRejectionWarning: отклонение необработанного обещания (идентификатор отклонения: 2): TypeError: this.provider.sendAsync не является функцией (узел: 22993) [DEP0018] DeprecationWarning: отклонение необработанного обещания устарело. В будущем отказы от обещаний, которые не будут обработаны, завершат процесс Node.js с ненулевым кодом выхода.