¿Por qué mis contratos se muestran como no implementados en Truffle?

Estoy tratando de usar Truffle para probar algunos contratos siguiendo sus documentos . Como se especifica, instalé truffle, testrpc, creé el contrato de migración y funcionó bien.

Corriótruffle compile

$ truffle compile
Compiling ./contracts/User1.sol...
Compiling ./contracts/User2.sol...
Compiling ./contracts/Registry.sol...

Writing artifacts to ./build/contracts

ytruffle migrate

$ truffle migrate
Using network 'development'.

Network up to date.

y ambos parecían estar bien.

El problema se estaba ejecutando tratando de interactuar con un contrato usandotruffe console

$ truffle console
Unexpected error: Cannot provision contracts while instantiating the console.
: Unexpected end of JSON input
    at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:213724:27
    at tryToString (fs.js:456:3)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:443:12)
truffle(development)> User1.deployed()
ReferenceError: User1 is not defined

Si ayuda, la estructura del directorio es

├── build
│   ├── Icon\r
│   └── contracts
│       ├── ConvertLib.json
│       ├── User1.json
│       ├── Icon\r
│       ├── MetaCoin.json
│       ├── Migrations.json
│       ├── User2.json
│       ├── Registry.json
│       ├── Storage.json
├── contracts
│   ├── User1.sol
│   ├── Migrations.sol
│   ├── User2.sol
│   ├── Registry.sol
├── migrations
│   ├── 1_initial_migration.js
│   ├── 2_user1_migration.sol
│   ├── 3_user2_migration.sol
│   ├── 4_registry_migration.sol
│   └── Icon\r
├── test
│   ├── Icon\r
│   ├── TestMetacoin.sol
│   └── metacoin.js
└── truffle.js

¿Cómo puedo arreglar esto?

Respuestas (3)

Pregunté en Truffle's Gitter y la forma de resolverlo fue creando otro directorio y cambiando el proyecto allí. Además, mi carpeta de documentos predeterminada está en Google Drive y descubrí que cada vez que tenía problemas como este (también tenía una cadena de bloques de ethereum privada que no se iniciaba), la movía a una carpeta que no está en Google Drive (Escritorio, etc.) lo haría funcionar.

No estoy seguro de si esto es realmente una cosa o no, pero podría valer la pena intentarlo si estás atrapado en la misma situación.

"mi carpeta de documentos predeterminada está en Google Drive" bahah
Gracias. Ahorré mucha depuración de mi lado. No sé por qué la sincronización de Google Drive debería ser un problema.

Eso puede deberse a que no tiene el paquete @truffle/contract. Yo tuve el mismo problema. Después de ejecutar sudo npm install -g @truffle/contractel problema se resolvió. Consulte más en https://github.com/trufflesuite/truffle/tree/master/packages/contract .

gracias mcansado, tuve el mismo problema con Dropbox. no hay forma de ver los contratos implementados en Ganache, hasta que se mueva de Dropbox a la carpeta del disco local. parece ser un problema al usar el servicio RPC con Dropbox o Google Drive...