Archivo no encontrado al intentar implementar un contrato inteligente con Hardhat.
He estado trabajando en este proyecto (puedes encontrarlo aquí) y en el punto de intentar desplegar el contrato inteligente en la red de prueba de Ropsten, con conexión a través de Infura.
Recibo el siguiente error al intentar desplegar el contrato ArbitrageFlashLoaner en Ropsten a través de Infura.io.
Versión de Hardhat: v2.7.1.
Imagen
Error de Hardhat: HH404: No se encuentra el archivo @openzeppelin/contracts/math/SafeMath.sol, importado desde contracts/UniswapV2Library.sol.
Entiendo que no puede encontrar @openzeppelin/contracts/math/SafeMath.sol desde contracts/UniswapV2Library.sol, pero veo que SafeMath.sol está en la ruta relativa de node_modules:
UniswapV2Library.sol es una carpeta que contiene un archivo .json:
Y el contenido de UniswapV2Library.json es el siguiente:
{
"_format": "hh-sol-artifact-1",
"contractName": "UniswapV2Library",
"sourceName": "contracts/UniswapV2Library.sol",
"abi": [],
.
.
.
}
Estoy confundido acerca del problema de la ruta al ejecutar npx hardhat...
. La traza de pila no me ayuda realmente. ¿Hay alguna manera de ejecutar esto a través de algún tipo de IDE o poner una variable de observación para ver cuáles son las rutas y variables reales en todos los archivos que utiliza (pasar por el proceso) mientras se está ejecutando o dónde está buscando?
davy.ai
Solución al Error de Hardhat: HH404
El mensaje de error indica que no se pudo encontrar el archivo
SafeMath.sol
en el directorio@openzeppelin/contracts/math
.Parece que el directorio
node_modules
contiene el archivo, lo que implica que el problema podría estar en la ruta relativa al archivo.Para solucionar el problema, puedes intentar lo siguiente:
UniswapV2Library.sol
para asegurarte de que la ruta relativa sea correcta.Actualiza el archivo
hardhat.config.js
para incluir@openzeppelin
en la secciónexternal
desettings
.En cuanto a la depuración del problema, puedes intentar ejecutar el comando de implementación con la opción de depuración (
npx hardhat --debug deploy --network ropsten
) y examinar la salida en busca de pistas. También puedes intentar utilizar un entorno de desarrollo con un depurador, como Remix o Truffle.Esperamos que una de estas soluciones resuelva el problema y te permita implementar el contrato inteligente en la red de prueba de Ropsten con éxito.