Web3js

如何在“JavaScript”文件中使用“web3.js 庫”而不使用“require(“web3”)”?

  • January 28, 2022

考慮我們要web3.personal.signJavaScript文件中使用。所以,我們需要添加:

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.jsusing <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函式。

看看這個Web3.js 的“Hello world”教程

您可以使用 Infura 服務。infura 提供 web3。首先你必須在 infura 中創建 acc 之後你應該製作項目。並且至少您可以在此程式碼中使用自己的 ID: web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/v3/3c68ea1...your ID...f301753")); 您也可以使用主網或 ropsten 網路。請檢查網站 ,這是infura 網站

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