如何在“JavaScript”文件中使用“web3.js 庫”而不使用“require(“web3”)”?
考慮我們要
web3.personal.sign
在JavaScript
文件中使用。所以,我們需要添加:Web3 = require("web3") web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
JavaScript
在我們文件的頂部。但是,如果我們想在 a 中執行此程式碼
browser
,我們不能使用require()
. 例如,在使用的情況下,ethereumjs
我們可以按如下方式添加 github 資源(如THIS ANSWER中所述):<script src="https://cdn.rawgit.com/ethereumjs/browser-builds/2fb69a714afe092b06645286f14b94f41e5c062c/dist/ethereumjs-tx.js"></script> <script>
它有效。
那麼,有沒有類似的方法來添加
web3.js
using<script src= ...
?當我使用
<script src="https://rawgit.com/ethereum/web3.js/develop/dist/web3.js"</script> <script>
而不是Web3 = require("web3")
收到以下錯誤消息時:<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>EthereumJS - Browser Example</title> </head> <body> <script src="https://rawgit.com/ethereumjs/browser-builds/master/dist/ethereumjs-abi/ethereumjs-abi-0.6.5.js"></script> <script src="https://rawgit.com/ethereum/web3.js/develop/dist/web3.js"></script> <script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script> <script> function constructPaymentMessage(contractAddress, amount) { return ethereumjs.ABI.soliditySHA3( ["address", "uint256"], [contractAddress, amount], ); } var message = constructPaymentMessage("0x0f0f422477d83bcbed227b0ae2fa3ace7ea3c653", 100); console.log(message); web3.personal.sign("0x" + message.toString("hex"), "0xc9c3b1351c65ac47abf3774b6a9715ba3625bec5", function(err, something) {}); </script> </body> </html>
錯誤:
“test.html:28 Uncaught ReferenceError: web3 is not defined at test3.html:28”
注1:
test.html
是該html
文件的名稱。**注2:**我使用
web3 version 1.0.0
.注意3: 我的主要目的是成功執行此處
JavaScript
提供的程式碼。當我使用它執行它時,我收到一些錯誤。執行此程式碼的最佳方式是什麼?我需要創建一個文件並執行它嗎?或者最好創建一個文件並使用它執行它?執行此程式碼用於簽名驗證的問題在此處詳細說明。最終,我不得不更改程式碼的某些部分(我在此處的問題中明確了哪些部分已更改)。但是,最終,當我呼叫合約(即)的函式進行驗證時,交易是node``JavaScript``html``browser``JavaScript``node filename.js``JavaScript``Solidity``function close``signature
正如我在此處提到錯誤的詳細資訊時恢復的。**注4:**相關問題:web3.js 錯誤:無法讀取未定義的屬性“提供者”
添加
<script src="https://rawgit.com/ethereum/web3.js/develop/dist/web3.js"</script>
到替換Web3 = require("web3")
是正確的,但是你仍然需要像這樣建立一個 Web3 提供者:window.addEventListener('load', function () { if (typeof web3 !== 'undefined') { console.log('Web3 Detected! ' + web3.currentProvider.constructor.name) window.web3 = new Web3(web3.currentProvider); } else { console.log('No Web3 Detected... using HTTP Provider') window.web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io/<APIKEY>")); } })
Web3 提供程序實際上將您的 JavaScript 連接到乙太坊網路,以便您可以撥打電話。之後,您將能夠開始呼叫
web3
函式。
您可以使用 Infura 服務。infura 提供 web3。首先你必須在 infura 中創建 acc 之後你應該製作項目。並且至少您可以在此程式碼中使用自己的 ID:
web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/v3/3c68ea1...your ID...f301753"));
您也可以使用主網或 ropsten 網路。請檢查網站 ,這是infura 網站