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:
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 detruffle-contract-schema
en la queartifacts
depende.Para resolver esto, intenta eliminar la carpeta
node_modules
y volver a instalar tus dependencias utilizando los siguientes comandos: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 directoriocontracts
y que el contrato se llameMigrations
.¡Espero que esto ayude! Avísame si tienes alguna pregunta adicional.