Web3js
無法在 JavaScript 中聲明 web3 對象
當我嘗試聲明一個 web3 對象時,它總是
undefined
.我正在使用 JavaScript 編寫程式碼,並使用 Infura 作為 ETH 主網的提供者。我也嘗試使用本地區塊鏈而不是 Infura,但它也沒有奏效。我是區塊鏈開發的新手,我有點堅持這一點。我知道它一定是我錯過的非常小的東西,也許我忘了安裝一些東西。我也花了很多時間研究我的問題,但我似乎無法讓它發揮作用。
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <script type="text/javascript" src="https://raw.githubusercontent.com/ethereum/web3.js/master/dist/web3.min.js"></script> </head> <script> const rpcURL = "https://rinkeby.infura.io/INFURA_PROJECT_ID"; const address = 'MY_WALLET_ADDRESS'; const web3 = new Web3(new Web3.providers.HttpProvider(rpcURL)); web3.eth.getBalance(address, (err, wei) => { myBalance = web3.utils.fromWei(wei, 'ether') console.log(myBalance) }) </script> </html>
我可以在這裡看到兩個問題。首先,由於它們的 CORB 策略,您不能直接包含託管在 GitHub 上的原始文件,但是有一個解決方法,只需按照以下步驟操作即可。最後你會得到這個 URL: https ://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js
然後,最好等待文件完全載入,因為該腳本可能會在實際包含 Web3 之前執行。
您可以使用
window.onload
純 Javascript$(document).ready()
和 jQuery。所以最終的腳本最終是:
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="description" content=""> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <script type="text/javascript" src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script> </head> <script> $(document).ready(function() { const rpcURL = "https://rinkeby.infura.io/INFURA_PROJECT_ID"; const address = 'MY_WALLET_ADDRESS'; const web3 = new Web3(new Web3.providers.HttpProvider(rpcURL)); web3.eth.getBalance(address, (err, wei) => { myBalance = web3.utils.fromWei(wei, 'ether') console.log(myBalance) }) }); </script> </html>
工作正常。