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.

El artefacto de Truffle es indefinido al ejecutar truffle migrate.

Estoy intentando ejecutar truffle migrate en dos archivos js: 1_initial_migration.js y 2_deploy_contracts.js. Puedo compilar exitosamente mis archivos .sol a ABIs .json, pero luego cuando intento migrar obtengo el siguiente error:

const Migrations = artifacts.require("Migrations");
                             ^

TypeError: No se puede leer la propiedad ‘require’ de indefinido

Así es cómo he utilizado artifacts en mis archivos js:

const { artifacts } = require("truffle");
const Migrations = artifacts.require("Migrations");

Los resultados de truffle version son los siguientes:

Truffle v5.1.39 (core: 5.1.39)
Solidity v0.5.16 (solc-js)
Node v14.16.0
Web3.js v1.2.1

También estoy siguiendo este curso en YouTube: enlace al curso.

He visto algunos mensajes sobre cambiar la versión de solidity, la versión de solc y la versión de truffle. He intentado reducir la versión global de truffle a 5.1.39 y actualizar la versión de solidity al comienzo de mis archivos .sol a ^0.6.0, ya que eso parece ser lo recomendado en esos mensajes:

Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que artifacts está indefinido. Una posible razón para esto es que la versión de Truffle que estás utilizando puede ser incompatible con la versión de truffle-contract-schema en la que artifacts depende.

    Para resolver esto, intenta eliminar la carpeta node_modules y volver a instalar tus dependencias utilizando los siguientes comandos:

    rm -rf node_modules
    npm install
    

    Si esto no funciona, puedes intentar retroceder a una versión anterior de Truffle. Es importante destacar que el curso que estás siguiendo es bastante antiguo, por lo que puede haber cambios en Truffle que afecten el código.

    Finalmente, verifica que tu contrato Migrations.sol esté en el directorio contracts y que el contrato se llame Migrations.

    ¡Espero que esto ayude! Avísame si tienes alguna pregunta adicional.

Comments are closed.