Truffle
呼叫 web3.eth.getAccounts() 什麼都不做 - 沒有錯誤
我正在嘗試使用
web3@1.3.3
and獲取所有帳戶@truffle/hdwallet-provider@1.2.2
。我正在HDWalletProvider
使用Infura。我在後端(Node.js v14.15.5)上執行此程式碼。這是我目前擁有的程式碼:const HDWalletProvider = require('@truffle/hdwallet-provider'); const Web3 = require('web3'); const provider = new HDWalletProvider({ mnemonic: { phrase: '... 12 words ...' }, providerOrUrl: 'https://rinkeby.infura.io/v3/PROJECT_ID' }); const web3 = new Web3(provider.engine); const deploy = async (contractName) => { try { console.log('checkpoint 1'); web3.eth.getAccounts().then(function(e) { console.log('checkpoint 2'); }) .catch(function(err) { console.log('checkpoint 3'); }); } catch (err) { console.log('Checkpoint 4'); } }; deploy('myContract');
當我執行程式碼時,唯一列印到控制台的是
checkpoint 1
. 沒有錯誤或異常,沒有跡象表明有什麼問題。有人可以給我一個提示我做錯了什麼嗎?為什麼getAccounts
不工作?編輯
我也嘗試了以下程式碼(根據smarteasy 的建議),但它也不起作用。它只列印
checkpoint 1
:const deploy = async (contractName) => { try { console.log('checkpoint 1'); const accounts = await web3.eth.getAccounts(); console.log('checkpoint 2'); } catch (err) { console.log('checkpoint 3'); } };
我認為您需要將
deploy()
功能包裝在async
(async () => { deploy('myContract'); })();
一般來說,我更喜歡使用Truffle進行聯繫人測試和部署。
它被聲明為非同步,所以使用等待。常量帳戶 = 等待 web3.eth.getAccounts();