Error al usar web3.eth.personal.sign

Recibo un error al usar web3.eth.personal.sign, y se queja de que la llamada "Esperaba 0 argumentos, pero obtuvo 3". Lo llamo en un entorno Angular/Typescript/javascript:

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

Estoy usando una versión reciente del paquete npm web3: 1.0.0-beta.33. Estoy siguiendo la documentación en http://web3js.readthedocs.io/en/1.0/web3-eth-personal.html . Busqué en .../node_modules y miré varios directorios web3*, pero nada obvio parecía incorrecto, al menos para mí. En node_modules/web3-eth-personal/src/index.js, parece que debería esperar 3 argumentos:

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

Cualquier búsqueda devuelve muy pocos resultados, que no parecen ser aplicables aquí. ¿Alguna idea sobre lo que está mal? ¿Cómo arreglar/solucionar? Desde la versión beta, ¿solo necesita esperar hasta que se "arregle"? Gracias.

Actualizar:

Además, en node_modules/web3/types.d.ts, veo:

exportar declarar clase Eth . . . personales: personales

exportar declarar clase Personal . . . signo()

¿Es aquí de donde se obtiene la expectativa de 0 argumentos?

Actualización2:

¡Este enlace parece ofrecer algunas soluciones, pero un poco demasiado profundas en directivas y controladores para mí!

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

Creo que tuve este problema antes. Y fue porque tenía que encordarme. desarrollador.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
¿Eso realmente se aplica aquí? Solo le estoy pasando una cadena construida, sin uso de json, aunque podría tener un "0x" incrustado ya que parte de él proviene de una llamada web3.utils.sha3.
Tienes razón. Probablemente no aplicar a ella. Fue solo un consejo rápido para tratar de ayudar. Tuve este problema antes y estaba bastante seguro de que estaba relacionado con stringfy. Intentaré recordar el escenario exacto para poder ser más útil.

Respuestas (1)

Parece que types.d.tsestá incompleto. Si está utilizando Angular, supongo que la compilación TS es lo que se queja. (Si pudiera ejecutarlo, funcionaría porque lo está usando correctamente).

Puede probar esta teoría cambiando ese types.d.tsarchivo (se parece a la línea 465 en class Personal) a:

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

Si eso funciona, la teoría es correcta y el archivo/paquete solo necesita completarse.

¡Excelente! Eso aclaró el error mecanografiado informado. Parece que algunos métodos más necesitarán ese tratamiento, ya que también tienen especificaciones de argumento vacías, y sospecho que estas especificaciones son principalmente (¿solo?) para la verificación de tipos. Gracias por mirar en esto. Hice clic en el voto positivo, ¡pero aparentemente soy neto pero lo suficientemente respetable (13 <15)!
¡Esas son buenas noticias! (Debería poder hacer clic en la marca verde para marcar esto como la respuesta. Eso incluso debería darle puntos por obtener una respuesta a una pregunta).