Javascript
web3js (v1.0.0-beta36) 無法使用 - 找不到模組“緩衝區”
我在我的 html 文件中包含
dist/web3.js
(1.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.js
到v0.20.6,它可以正常工作。我錯過了什麼嗎?
這裡有兩個主要問題:
require
是 Node.js 模組系統的一部分,不能在標準的 HTML 頁面上工作,你也不需要它。- 您要呼叫以獲取目前塊號的函式是
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/