Solidity

Solidity 事件未從 Web3.js 顯示

  • August 8, 2019

我正在嘗試設置一個事件Solidity並從中收聽,Web3但我不斷收到null回复。這是我的程式碼:

契約的相關部分:

event NewUser(string userid);

function createNewUser(string memory _userId) public {
   // creating the user and setting it to a mapping 
   emit NewUser(_userId);
}

Javascript來自Ethereum's參考:

async function watchEvents(contract) {
   contract.events.allEvents({
      fromBlock: 0
   },function(error, event){ console.log('all events?'); console.log(event); })
 .on('data', function(event){
    console.log(event); // same results as the optional callback above
 })
 .on('changed', function(event){
    // remove event from local database
 })
 .on('error', console.error);
}

使用另一個javascript功能,我可以看到正在創建新使用者,並且交易被列為成功Ganache。但該watchEvents方法不斷列印null

我錯過了什麼?

truffle-config.js您可以通過在文件中添加以下內容來試用 Web 套接字。

networks: {
development: {
     provider: function() {
       return new Web3.providers.WebsocketProvider("ws://localhost:7545");
     },
     network_id: "5777"
   }
...
}

您將必須導入 Web3。

引用自:https://ethereum.stackexchange.com/questions/73718