es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

keccak.js Error de referencia no capturado: Buffer no está definido

Tengo un pequeño script en ReactJS:

importar ‘./App.css’;
import { useState, useEffect } de ‘react’;
//Importar la librería ethers (como web3.js)
import { ethers } de ‘ethers’;
const { MerkleTree } = require(‘merkletreejs’)
const keccak256 = require(‘keccak256’);
const tokens = require(‘./tokens.json’)

function App() {

function isWhitelisted() {
let tab = [];
tokens.map(token => {
tab.push(token.address);
})
const leaves = tab.map(v => keccak256(v));
console.log(leaves);
const tree = new MerkleTree(leaves, keccak256, { sort: true });
const leaf = keccak256(“0x7D8a1f6A5efc16E88FeF87E7745EAc2F5Cbc88D7”)
const proof = tree.getHexProof(leaf);
}

return (

);
}

export default App;

Desafortunadamente, tengo este error al ejecutar el script:

keccak.js:41 Error de referencia no encontrada: Buffer no está definido
en Keccak.update (keccak.js:41)
en keccak256 (keccak256.js:11)
en App.js:16
en Array.map (<anónimo>)
en isWhitelisted (App.js:16)
en HTMLUnknownElement.callCallback (react-dom.development.js:3945)
en Object.invokeGuardedCallbackDev (react-dom.development.js:3994)
en invokeGuardedCallback (react-dom.development.js:4056)
en invokeGuardedCallbackAndCatchFirstError (react-dom.development.js:4070)
en executeDispatch (react-dom.development.js:8243)

Entonces, el error está justo aquí:

const leaves = tab.map(v => keccak256(v));

Pero lamentablemente no puedo encontrar una solución, ¿pueden ayudarme por favor? ¡Gracias!</anónimo>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El error se produce porque el script no tiene el módulo Buffer, que es necesario para la función keccak256. Para solucionar el problema, puedes agregar la siguiente línea al principio de tu script:

    import { Buffer } from 'buffer';
    

    El script modificado debería lucir así:

    import './App.css';
    import { useState, useEffect } from 'react';
    import { ethers } from 'ethers';
    import { MerkleTree } from 'merkletreejs';
    import { Buffer } from 'buffer'; // agregar esta línea
    const keccak256 = require('keccak256');
    const tokens = require('./tokens.json')
    
    function App() {
    
      function isWhitelisted() {
        let tab = [];
        tokens.map(token => {
          tab.push(token.address);
        })
        const leaves = tab.map(v => keccak256(v));
        console.log(leaves);
        const tree = new MerkleTree(leaves, keccak256, { sort: true });
        const leaf = keccak256("0x7D8a1f6A5efc16E88FeF87E7745EAc2F5Cbc88D7")
        const proof = tree.getHexProof(leaf);
      }
    
      return (
        <div classname="App">
          <button onclick="{isWhitelisted}">TEST</button>
        </div>
      );
    }
    
    export default App;
    

    Asegúrate de instalar el módulo buffer antes de ejecutar el script ejecutando el siguiente comando en tu terminal:

    npm install buffer --save
    

    ¡Espero que esto ayude!

Comments are closed.