Fehler bei der Verwendung von web3.eth.personal.sign

Ich erhalte einen Fehler bei der Verwendung von web3.eth.personal.sign, wobei ich mich darüber beschwere, dass der Aufruf "0 Argumente erwartet, aber 3 erhalten" hat. Ich nenne es in einer Angular/Typescript/Javascript-Umgebung:

this.bottleSig=this.web3.eth.personal.sign(this.bottleDataToSign, this.addressProd, this.passwordProd);

Ich verwende eine neuere Version des npm web3-Pakets: 1.0.0-beta.33. Ich folge der Dokumentation unter http://web3js.readthedocs.io/en/1.0/web3-eth-personal.html . Ich stöberte unter .../node_modules herum und sah mir verschiedene web3*-Verzeichnisse an, aber nichts Offensichtliches sah falsch aus, zumindest für mich. Unter node_modules/web3-eth-personal/src/index.js sieht es so aus, als ob 3 Argumente erwartet werden sollten:

new Method({
        name: 'sign',
        call: 'personal_sign',
        params: 3,
        inputFormatter: [formatters.inputSignFormatter, formatters.inputAddressFormatter, null]
    }),

Jede Suche liefert sehr wenige Ergebnisse, die hier nicht anwendbar zu sein scheinen. Irgendwelche Gedanken darüber, was falsch ist? Wie zu beheben/Problemumgehung? Müssen Sie seit der Beta nur warten, bis "behoben"? Vielen Dank.

Aktualisieren:

Außerdem sehe ich in node_modules/web3/types.d.ts:

export deklarieren Klasse Eth . . . persönlich: Persönlich

export deklariert die Klasse Personal . . . Zeichen()

Kommt hier die Erwartung von 0 Argumenten her?

Update2:

Dieser Link scheint einige Lösungen zu bieten, aber ein bisschen zu tief in Direktiven und Controller für mich!

http://danlec.com/st4k#questions/46692046

Ich glaube, ich hatte dieses Problem schon einmal. Und es war, weil ich schnüren wollte. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Gilt das hier wirklich? Ich übergebe ihm nur eine konstruierte Zeichenfolge ohne Verwendung von json, obwohl sie möglicherweise ein eingebettetes "0x" enthält, da ein Teil davon von einem web3.utils.sha3-Aufruf stammt.
Du hast recht. Betrifft es wohl nicht. Es war nur ein kurzer Tipp, um zu versuchen, zu helfen. Ich hatte dieses Problem schon einmal und war mir ziemlich sicher, dass es mit stringfy zusammenhängt. Ich werde versuchen, mich an das genaue Szenario zu erinnern, damit ich hilfreicher sein kann

Antworten (1)

Sieht so aus, als wäre types.d.tsdas unvollständig. Wenn Sie Angular verwenden, beschwert sich meiner Meinung nach die TS-Kompilierung. (Wenn Sie es einfach ausführen könnten, würde es funktionieren, weil Sie es richtig verwenden.)

Sie können diese Theorie testen, indem Sie diese Datei ändern types.d.ts(sieht aus wie Zeile 465 in class Personal) zu:

sign(dataToSign: string, address: string, password: string, cb?: Callback<string>): Promise<string>

Wenn das funktioniert, stimmt die Theorie und die Datei/das Paket muss nur noch vervollständigt werden.

Exzellent! Das hat den gemeldeten Typescript-Fehler behoben. Es sieht so aus, als ob einige weitere Methoden diese Behandlung benötigen, die auch leere Argumentspezifikationen haben, und ich vermute, dass diese Spezifikationen hauptsächlich (nur?) Für die Typprüfung sind. Danke, dass Sie sich das angesehen haben. Ich habe auf die Up-Vote geklickt, aber anscheinend bin ich netto noch seriös genug (13 < 15)!
Das sind gute Nachrichten! (Sie sollten in der Lage sein, auf das grüne Häkchen zu klicken, um dies als Antwort zu markieren. Das sollte Ihnen sogar Punkte für die Beantwortung einer Frage geben.)