Cada vez que intento compilar mi contrato de solidez, aparece el error ParserError: Source \"@OpenZeppelin/contracts/math/SafeMath.sol\" not found: File import callback not supported .
pragma solidity ^0.7.0; import "@OpenZeppelin/contracts/token/ERC20/ERC20.sol"; import "@OpenZeppelin/contracts/math/SafeMath.sol";¿Alguna idea de que puede estar causando esto?
Tengo el mismo problema ahora mismo. Estoy usando truffle+node y lo arreglé modificando la ruta de importación a una ruta relativa, por ejemplo,
pragma solidity ^0.7.0; import "../node_modules/OpenZeppelin/contracts/token/ERC20/ERC20.sol"; import "../node_modules/OpenZeppelin/contracts/math/SafeMath.sol";No estoy 100% seguro de por qué sucede esto, pero espero haberte ayudado.
Para algunos entornos, SafeMath tiene un camino diferente
import "@openzeppelin/contracts/utils/math/SafeMath.sol";en realidad, el problema es que el compilador de solidity es estúpido y no sigue automáticamente la ruta, debe especificar todas las rutas permitidas manualmente (https://docs.soliditylang.org/en/latest/using-the-compiler.html ), cada una uno de ellos y completamente al archivo (no se puede dar solo la carpeta de nivel superior) use npx hardat compile si puede, es mejor
Después de instalar OpenZeppelin, cierre su IDE y vuelva a abrirlo.
Asegúrese de abrir VS Code en el directorio raíz del proyecto .
En mi caso, así es como se veía mi directorio de VS Code cuando recibo el mismo error.
projects |___MyContract |__contracts |__Contract.sol Reabrir VS Code en el directorio MyContract lo soluciona.
MyContract |__contracts |__Contract.sollo que funcionó para mí; (Estoy usando Windows10 y el código de Visual Studio) -haga clic en el ícono de extensiones -busque la extensión solidity -seleccione el botón de desinstalación y haga clic en la flecha desplegable -seleccione instalar otra versión -seleccione la versión 0.0.135 -Después de la instalación, haga clic en "Recarga requerida"