Wie verwende ich "web3.js-Bibliothek" in einer "JavaScript"-Datei, ohne "require("web3")" zu verwenden?

Stellen Sie sich vor, wir möchten web3.personal.signin einer JavaScriptDatei verwenden. Wir müssen also hinzufügen:

Web3 = require("web3")
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

ganz oben in unserer JavaScriptDatei.

Wenn wir diesen Code jedoch in einem ausführen möchten browser, können wir nicht verwenden require(). Im Falle der Verwendung ethereumjskönnen wir beispielsweise Github-Ressourcen wie folgt hinzufügen (wie in DIESER ANTWORT beschrieben ):

<script src="https://cdn.rawgit.com/ethereumjs/browser-builds/2fb69a714afe092b06645286f14b94f41e5c062c/dist/ethereumjs-tx.js"></script>
<script>

Und es funktioniert.

Gibt es also eine ähnliche Möglichkeit zum Hinzufügen web3.jsmit <script src= ...?

Wenn ich <script src="https://rawgit.com/ethereum/web3.js/develop/dist/web3.js"</script> <script> anstelle von Web3 = require("web3") verwende , erhalte ich folgende Fehlermeldung:

    <!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>

Fehler:

"test.html:28 Uncaught ReferenceError: web3 is not defined at test3.html:28"

Hinweis 1: test.html ist der Name dieser htmlDatei.

Anmerkung2: Ich verwende web3 version 1.0.0.

Anmerkung 3: Mein Hauptzweck ist es, den HIERJavaScript vorgestellten Code erfolgreich auszuführen . Wenn ich es mit ausführe, erhalte ich einige Fehler. Was ist der beste Weg, diesen Code auszuführen ? Muss ich eine Datei erstellen und mit ausführen ? oder ist es besser, eine Datei zu erstellen und sie mit auszuführen ? Das Problem mit der Ausführung dieses Codes zur Signaturüberprüfung wird HIER ausführlich erklärt . Irgendwann musste ich einen Teil des Codes ändern (ich habe genau angegeben, welche Teile in meiner Frage HIER geändert wurden ). Wenn ich jedoch schließlich die Funktion des Vertrags (dh ) aufrufe, um zu überprüfen , ist die TransaktionnodeJavaScripthtmlbrowserJavaScriptnode filename.jsJavaScriptSolidityfunction closesignaturezurückgesetzt , da ich die Einzelheiten des Fehlers HIER erwähnt habe .

Hinweis 4: Zugehörige Frage: web3.js-Fehler: Eigenschaft „Anbieter“ von undefiniert kann nicht gelesen werden

Antworten (2)

Das Hinzufügen <script src="https://rawgit.com/ethereum/web3.js/develop/dist/web3.js"</script>zum Ersetzen Web3 = require("web3")ist richtig, aber Sie müssen noch einen Web3-Anbieter wie diesen einrichten:

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>"));
    }
})

Der Web3-Anbieter verbindet Ihr JavaScript tatsächlich mit dem Ethereum-Netzwerk, damit Sie Anrufe tätigen können. Danach können Sie mit dem Aufrufen von web3Funktionen beginnen.

Sehen Sie sich dieses „Hallo Welt“-Tutorial für Web3.js an .

Der Hello-World-Link funktioniert nicht mehr
Ich habe den Link aktualisiert. Bitte lassen Sie mich wissen, wenn Sie heute Probleme mit dem Tutorial finden, da es eine Weile her ist, seit ich es geschrieben habe

Sie können Infura-Dienste nutzen. infura bietet das web3. Zuerst müssen Sie Acc in Infura erstellen, danach sollten Sie ein Projekt erstellen. und zumindest können Sie Ihre eigene ID in diesem Code verwenden: web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/v3/3c68ea1...your ID...f301753")); Sie können auch das Hauptnetz oder das Ropsten-Netzwerk verwenden. Bitte überprüfen Sie die Website und dies ist die Infura-Website

Die Frage war, wie man web3.js in ein Projekt einbindet. Es ging mir nicht darum, es zu verwenden, sondern nur darum, es in die HTML-Datei aufzunehmen.