Ich habe versucht, ethereumjs-tx in einem Browser zu verwenden. Ich habe die Browser-Builds von hier https://github.com/ethereumjs/browser-builds/tree/master/dist heruntergeladen
Das ist mein Codeschnipsel
<head>
<title></title>
<meta charset="utf-8" />
<script type="text/javascript" src="ethereumjs-tx.js"></script>
</head>
<body>
<script>
var Tx = require('ethereumjs-tx');
var privateKey = new Buffer('e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109', 'hex');
var rawTx = {
nonce: '00',
gasPrice: '09184e72a000',
gasLimit: '2710',
to: '0000000000000000000000000000000000000000',
value: '00',
data: '7f7465737432000000000000000000000000000000000000000000000000000000600057'
};
var tx = new Tx(rawTx);
tx.sign(privateKey);
var serializedTx = tx.serialize();
</script>
Es wird jedoch weiterhin der Fehler in der Konsole Uncaught ReferenceError ausgegeben: require is not defined
Versuche dies..
<html>
<head>
<!--
<script src="https://github.com/ethereumjs/browser-builds/blob/master/dist/ethereumjs-tx/ethereumjs-tx-1.3.3.min.js"></script>
-->
<script src="https://cdn.jsdelivr.net/gh/ethereumjs/browser-builds/dist/ethereumjs-tx/ethereumjs-tx-1.3.3.min.js"></script>
<script>
console.log('typeof ethereumjs:', (typeof ethereumjs))
console.log('Object.keys(ethereumjs):', Object.keys(ethereumjs))
console.log('typeof ethereumjs.Tx:', (typeof ethereumjs.Tx))
console.log('typeof ethereumjs.RLP:', (typeof ethereumjs.RLP))
console.log('typeof ethereumjs.Util:', (typeof ethereumjs.Util))
console.log('typeof ethereumjs.Buffer:', (typeof ethereumjs.Buffer))
console.log('typeof ethereumjs.Buffer.Buffer:', (typeof ethereumjs.Buffer.Buffer))
{
let privateKey = new ethereumjs.Buffer.Buffer('e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109', 'hex')
let txParams = {
nonce: '0x00',
gasPrice: '0x09184e72a000',
gasLimit: '0x2710',
to: '0x0000000000000000000000000000000000000000',
value: '0x00',
data: '0x7f7465737432000000000000000000000000000000000000000000000000000000600057'
}
let tx = new ethereumjs.Tx(txParams)
tx.sign(privateKey)
let serializedTx = tx.serialize().toString('hex')
console.log('serializedTx:', serializedTx)
}
</script>
</head>
<body>
</body>
</html>
Das hat nicht wirklich etwas mit Ethereum zu tun, aber was auch immer.
require() ist keine gültige clientseitige JS-Funktion. Das heißt ... Ihr Browser weiß nicht, was er tun soll, wenn er zu dieser require
Zeile kommt.
Es gibt ein raffiniertes Paket namens require.js , das die erforderliche Funktionalität auf Ihren Browser erweitert.
Ich bin mit ihren Browser-Builds nicht vertraut, aber es kann sein, dass Sie Code verwenden, der nicht für diese Builds bestimmt ist. Wenn ich Sie wäre, würde ich versuchen, die Zeile „require“ zu entfernen und zu sehen, ob sie läuft, während Sie ethereumjs-tx in den Kopf laden.
Wenn es sich um ein HTML-Snippet handelt, sollten Sie Ihr JS außerdem in <script>
Tags einschließen und wahrscheinlich console.log(serializedTx)
oder was auch immer Sie versuchen, so etwas zu erhalten, damit Sie das Ergebnis tatsächlich sehen können, wenn es ausgeführt wird. ;)
ethereumjs
jedoch nicht verwandt mit Ethereum
?Uncaught ReferenceError: require
) ist viel umfassender als Ethereum und tritt überall im Javascript-Land auf. Es ist nicht Ethereum-spezifisch
David T
Fragesteller
JavaScript
vorgestellten Code ausführen kann: link which usesethereumjs-abi
? Ich habe die Hauptfrage HIER beschrieben: Link DankeJohn Murphy