“modificador desconocido: virtual” y “modificador desconocido: override” al llamar a new ethers.Contract en el constructor de la clase.
Al instanciar un nuevo ethers.Contract en el constructor de la clase, obtengo esto para cada declaración:
modificador desconocido: virtual
modificador desconocido: override
No estoy seguro de qué significa esto, he intentado investigar cómo deshacerme de esto pero sin éxito. Soy muy nuevo en Javascript y Node.js. No interrumpe el programa de ninguna manera, al parecer, ya que el .exe se ejecuta sin problemas y sin errores además de este mensaje cada vez que se llama a new ethers.Contract en el constructor de la clase. Solo quiero saber por qué aparece este mensaje.
El código donde ocurre y los mensajes:
class pair{
constructor(token0, token1, address){
this._token0 = web3.utils.toChecksumAddress(token0);
this._token1 = web3.utils.toChecksumAddress(token1);
this._address = web3.utils.toChecksumAddress(address);
this._pair_contract = new ethers.Contract(
this._address,
pair_abi_template,
account
);
this._token0contract = new ethers.Contract(
this._token0,
abi_template,
account
);
this._token1contract = new ethers.Contract(
this._token1,
abi_template,
account
);
}
}
Una nueva instancia de clase se agrega a un array que se llama mediante un evento de suscripción de la siguiente manera:
let pair_array = [];
async function init(){
let query = new Moralis.Query('PairCreatedEvents');
let subscription = await query.subscribe();
subscription.on('create', pair_created);// Call Pair Created Function
}
pair_created = async(p_event) => {
pair_array.push(new pair(p_event.get('token0'), p_event.get('token1'), p_event.get('pair')));
}
El mensaje:
modificador desconocido: virtual
modificador desconocido: override
modificador desconocido: virtual
modificador desconocido: override
modificador desconocido: virtual
modificador desconocido: override
modificador desconocido: virtual
modificador desconocido: override
davy.ai
El mensaje de error “unknown modifier: virtual” y “unknown modifier: override” indica que podría haber algún problema relacionado con la versión de Solidity que se utilizó para escribir los contratos inteligentes o algún error de sintaxis en el código.
Una solución que puedes intentar es actualizar la versión de Solidity en el contrato inteligente y comprobar si eso resuelve el problema. Otra cosa que puedes intentar es verificar si está instalada la versión correcta de la biblioteca ethers.js y si estás utilizando la sintaxis correcta para las llamadas a las funciones.
También es posible que los mensajes de error estén relacionados con el uso de la palabra clave
override
, que es una característica de sintaxis introducida en Solidity 0.6.0. Si estás utilizando una versión anterior de Solidity, es posible que necesites eliminar o reemplazar cualquier uso de la palabra claveoverride
.Para investigar más a fondo el problema, también puedes intentar ejecutar el código con un compilador de Solidity que admita la versión de Solidity utilizada en tus contratos y ver si eso ayuda a identificar el problema.
En general, es difícil identificar la causa exacta del mensaje de error sin más información sobre la versión de Solidity y la biblioteca ethers.js que se está utilizando y el resto del código base.