Javascript

web3js (v1.0.0-beta36) 無法使用 - 找不到模組“緩衝區”

  • October 25, 2018

我在我的 html 文件中包含dist/web3.js1.0.0-beta36 ),如下所示

<script type="text/javascript" src="./web3.js"></script>
<script type="text/javascript">
   var Web3 = require('web3');        
   var web3 = new Web3();

   window.onload = function() {
       web3.setProvider(new web3.providers.HttpProvider("https://api.myetherwallet.com/eth"));
       var account = web3.version;
       var balance = web3.eth.blockNumber;
       balance = 0;
   };
</script>

當我使用 Firefox/Chrome 啟動 html 時,它會拋出異常Error: Cannot find module 'buffer',然後跟隨Uncaught ReferenceError: require is not defined

如果我將版本降級web3.jsv0.20.6,它可以正常工作。我錯過了什麼嗎?

這裡有兩個主要問題:

  1. require是 Node.js 模組系統的一部分,不能在標準的 HTML 頁面上工作,你也不需要它。
  2. 您要呼叫以獲取目前塊號的函式是web3.eth.getBlockNumber(),這是一個非同步函式,因此您還需要處理它。

如果這樣編寫,您的程式碼將起作用:

<script type="text/javascript" src="./web3.js"></script>
<script type="text/javascript">
window.onload = async function () {
   var web3 = new Web3('https://api.myetherwallet.com/eth');
   var version = web3.version;
   var blockNumber = await web3.eth.getBlockNumber();

   console.log(version, blockNumber);

};
</script>

這是一個工作範例:https ://jsfiddle.net/d8rus2hc/

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