Uncaught ReferenceError: Web3 ist nicht Solidity definiert

Ich habe mit diesem Projekt gearbeitet und bereits alle Abhängigkeiten und Web3 heruntergeladen, aber wenn ich meinen Code teste, wird mir Folgendes angezeigt:

Uncaught ReferenceError: Web3 is not defined

in Zeile 120.

Das ist mein Code:

<script>
if(typeof web3 !== 'undefined'){
    web3 = new Web3(web3.currentProvider); -this is where it errors
}else {
    web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); 
}

web3.eth.defaultAccount = web3.eth.accounts[0];

var SuffrageContract = web3.eth.contract('example');
var Suffrage = SuffrageContract.at('example');
console.log(Suffrage);

Ich habe bereits mehrere Methoden wie das Deklarieren ausprobiert

web3 = required('web3');

aber es funktioniert immer noch nicht.

Kannst du bitte mehr aufnehmen? Plausibilitätsprüfung: Haben Sie die web3.jsDatei eingefügt?
Ja, ich habe web3.js eingefügt
versuchen Sie es einzuschließen<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
Danke Herr Achala Dissanayake! Mein Projekt läuft jetzt!
Ja. :) Du Rocker.

Antworten (2)

Ich hoffe, Sie verwenden web3als Browsermodul.

Wie in ihrer Dokumentation können Sie den CDN-Link mit <script>Tags wie unten hinzufügen,

<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
Ich kann das nicht hochheben, weil ich weniger als 1 Wiederholung habe. Aber trotzdem danke! Wegen dir funktioniert es jetzt. :)
@JeffNUCode Hoffe, du kannst jetzt aufstehen: D

Verpacken Sie diesen Code mit einem window.addEventListener('load',...)Handler?

Lesen Sie hier: Web3 - Ethereum Browser Environment Check

Beachten Sie, dass die Umgebungsprüfung web3in einen window.addEventListener('load', ...)Handler eingeschlossen ist. Dieser Ansatz vermeidet Race-Conditions mit Web3-Injection-Timing.

window.addEventListener('load', function() {

  // Checking if Web3 has been injected by the browser (Mist/MetaMask)
  if (typeof web3 !== 'undefined') {
    // Use Mist/MetaMask's provider
    web3js = new Web3(web3.currentProvider);
  } else {
    console.log('No web3? You should consider trying MetaMask!')
    // fallback - use your fallback strategy (local node / hosted node + in-dapp id mgmt / fail)
    web3js = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
  }

  // Now you can start your app & access web3 freely:
  startApp()

})
Es funktionierte immer noch nicht. Ich denke, es wird einfach sein, wenn ich meinen gesamten Code hier poste.
nicht der ganze Code mein schlechtes
Habe gerade meine Frage bearbeitet.