es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué esta sintaxis de la sentencia de importación me funciona a mí cuando la sintaxis en la documentación de Open Zeppelin no lo hace?

importa “@openzeppelin/contracts/access/Ownable.sol”; NO FUNCIONA (pero es lo que muestra la documentación y el curso que estoy tomando)

importa “OpenZeppelin/openzeppelin-contracts@3.4.0/contracts/access/Ownable.sol”; FUNCIONA (lo encontré en otra publicación de SO)

Estoy un poco confundido de por qué el primero no funciona cuando es lo que la documentación me dice que use. Cuando ejecuto brownie compile, obtengo el siguiente error:

contracts/Lottery.sol:4:1: ParserError: Source "@openzeppelin/contracts/access/Ownable.sol" not found: File outside of allowed directories.
import "@openzeppelin/contracts/access/Ownable.sol";

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual import "@openzeppelin/contracts/access/Ownable.sol"; no funciona es porque es una declaración de importación obsoleta. La declaración de importación correcta para la última versión de OpenZeppelin (al momento de escribir esto) es import "OpenZeppelin/openzeppelin-contracts@3.4.0/contracts/access/Ownable.sol";.

    La razón por la cual la antigua declaración de importación sigue presente en algunas documentaciones y tutoriales es porque era la declaración de importación correcta para una versión anterior de OpenZeppelin. A medida que se lanzan nuevas versiones, las declaraciones de importación pueden cambiar, por lo que es importante siempre revisar la documentación más reciente para obtener la declaración de importación correcta.

    En el mensaje de error contracts/Lottery.sol:4:1: ParserError: Source "@openzeppelin/contracts/access/Ownable.sol" not found: File outside of allowed directories., el compilador nos está diciendo que no puede encontrar el archivo que estamos intentando importar porque no está en los directorios permitidos. Esto se debe a que la antigua declaración de importación se ha dejado de usar y ya no es válida.

Comments are closed.