Skip to content
This repository has been archived by the owner on Mar 11, 2024. It is now read-only.

Testing in ropsten network (in infura) with truffle.js gives me this error #165

Closed
gerstaro opened this issue Aug 9, 2017 · 8 comments
Closed

Comments

@gerstaro
Copy link

gerstaro commented Aug 9, 2017

root@ubuntu-4gb-nyc3-01:~# truffle migrate --network ropsten (node:14686) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): TypeError: this.provider.sendAsync is not a function (node:14686) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. Using network 'ropsten'.

Running migration: 1_initial_migration.js

**After that it exits to

root@ubuntu-4gb-nyc3-01:~#

without running 2_deploy_contracts.js**

My truffle.js looks like the following :

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
  }
  };

My 2_deploy_contracts.js looks like the following ;

var SafeMath = artifacts.require("./SafeMath.sol");
var RedPillToken = artifacts.require("./MyToken.sol");
var Crowdsale = artifacts.require("./Crowdsale.sol");


module.exports = function(deployer) {

	var owner = web3.eth.accounts[0];
	var wallet = web3.eth.accounts[1];

	console.log("Owner address: " + owner);	
	console.log("Wallet address: " + wallet);	

	deployer.deploy(SafeMath, { from: owner });
	deployer.link(SafeMath,MyToken);
	return deployer.deploy(MyToken, { from: owner }).then(function() {
		console.log("MyToken address: " + MyToken.address);
		return deployer.deploy(Crowdsale, MyToken.address, wallet, { from: owner }).then(function() {
			console.log("Crowdsale address: " + Crowdsale.address);
			return MyToken.deployed().then(function(coin) {
				return coin.owner.call().then(function(owner) {
					console.log("MyToken owner : " + owner);
					return coin.transferOwnership(Crowdsale.address, {from: owner}).then(function(txn) {
						console.log("MyToken owner was changed: " + Crowdsale.address);		
					});
				})
			});
		});
	});
};

Where will I find this.provider.sendAsync function?

I m using node : v8.2.1 and Ubuntu 16.04

I m really stuck with this. Any help would be appreciated. Thanks

N.B. I created a 12 word mnemonic from metamask plugin from chrome. and then tried to deploy the conract in ropsten again after updating the truffle.js with the new mnemonic. Again the same error :UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): TypeError: this.provider.sendAsync is not a function (node:22993) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

@okwme
Copy link

okwme commented Sep 3, 2017

i'm having the same error after following this tutorial.

(node:38684) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): TypeError: this.provider.sendAsync is not a function
(node:38684) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(node:38685) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): TypeError: this.provider.sendAsync is not a function
(node:38685) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Using network 'ropsten'.

@okwme
Copy link

okwme commented Sep 3, 2017

found one solution is to install older versions of the packages:
$ npm install ethereumjs-wallet bip39 web3-provider-engine@8.6.1 web3@0.18.4 zeppelin-solidity --save

@gerstaro
Copy link
Author

gerstaro commented Sep 9, 2017 via email

@dryruner
Copy link

I don't quite like this solution, as current version is 13.3.3......

@dryruner
Copy link

dryruner commented Nov 16, 2017

All right, it seems the failure has nothing to do with web3-provider-engine, it's related to web3.
I installed web3-provider-engine (@latest version), but with web3@0.18.4, the issue is gone!

@bmmpxf
Copy link
Contributor

bmmpxf commented Nov 27, 2017

Hi there. This repo is for the website, not Truffle the application. For questions of this nature, we recommend logging into our Gitter channel and asking for help there.

If you think there is a bug in Truffle, you can raise an issue on the main Truffle issue tracker. Thanks!

@bmmpxf bmmpxf closed this as completed Nov 27, 2017
@Ankarrr
Copy link

Ankarrr commented Jan 24, 2018

If you follow this tutorial, try to change the provider declaration to:

provider: new HDWalletProvider(mnemonic, "https://ropsten.infura.io/<Your Token>"),

It fixes TypeError: this.provider.sendAsync is not a function for me.

@celeduc
Copy link

celeduc commented Jun 30, 2018

A similar issue exists with truffle-contract and MetaMask, for which a workaround is documented here: https://github.com/trufflesuite/truffle-contract/issues/57#issuecomment-379877709

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants