¿Cómo usar la "biblioteca web3.js" en un archivo "JavaScript" sin usar "require("web3")"?

Considere que queremos usar web3.personal.signen un JavaScriptarchivo. Entonces, debemos agregar:

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

en la parte superior de nuestro JavaScriptarchivo.

Sin embargo, si queremos ejecutar este código en un browser, no podemos usar require(). Por ejemplo, en caso de usar ethereumjspodemos agregar recursos de github de la siguiente manera (como se describe en ESTA RESPUESTA ):

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

Y funciona.

Entonces, ¿hay una forma similar de agregar web3.jsusando <script src= ...?

Cuando uso <script src="https://rawgit.com/ethereum/web3.js/develop/dist/web3.js"</script> <script> en lugar de Web3 = require("web3") recibo el siguiente mensaje de error:

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

Error:

"test.html:28 Error de referencia no capturado: web3 no está definido en test3.html:28"

Nota 1: test.html es el nombre de este htmlarchivo.

Nota 2: Yo uso web3 version 1.0.0.

Nota 3: Mi objetivo principal es ejecutar con éxito JavaScriptel código presentado AQUÍ . Cuando lo ejecuto usando noderecibo algunos errores. ¿ Cuál es la mejor manera de ejecutar este JavaScriptcódigo? ¿Necesito crear un htmlarchivo y ejecutarlo con browser? o es mejor crear un JavaScriptarchivo y ejecutarlo usando node filename.js? El problema con la ejecución de este código que es para la verificación de la firma se explica en detalle AQUÍ . Eventualmente, tuve que cambiar alguna parte del JavaScriptcódigo (precisé qué partes se cambiaron en mi pregunta AQUÍ ). Sin embargo, eventualmente, cuando llamo a la función de Soliditycontrato (es decir function close) para verificar signature, la transacción esrevertido como mencioné los detalles del error AQUÍ .

Nota 4: pregunta relacionada: error web3.js: no se puede leer la propiedad 'proveedores' de undefined

Respuestas (2)

Agregar <script src="https://rawgit.com/ethereum/web3.js/develop/dist/web3.js"</script>para reemplazar Web3 = require("web3")es correcto, pero aún necesita establecer un proveedor Web3 como este:

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

El proveedor Web3 es lo que realmente conecta tu JavaScript a la red Ethereum para que puedas hacer llamadas. Después de eso, podrá comenzar a llamar web3funciones.

Eche un vistazo a este tutorial "Hola mundo" para Web3.js.

Ese enlace de hola mundo ya no funciona
He actualizado el enlace. Avíseme si encuentra problemas con el tutorial hoy, ya que ha pasado un tiempo desde que lo escribí.

puede utilizar los servicios de Infura. infura proporciona la web3. primero debe crear acc en infura, luego debe hacer project. y al menos puede usar su propia identificación en este código: web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/v3/3c68ea1...your ID...f301753")); también puede usar la red principal o la red ropsten. por favor revise el sitio y este es el sitio de infura

La pregunta era cómo incluir web3.js en un proyecto. No se trataba de usarlo, solo de cómo incluirlo en el archivo html.