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>
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:
El script modificado debería lucir así:
Asegúrate de instalar el módulo buffer antes de ejecutar el script ejecutando el siguiente comando en tu terminal:
¡Espero que esto ayude!