Warum werden meine Verträge in Truffle als nicht bereitgestellt angezeigt?

Ich versuche, Truffle zu verwenden, um einige Verträge zu testen, indem ich ihren Dokumenten folge . Wie angegeben, habe ich truffle, testrpc installiert, den Migrationsvertrag erstellt und es hat gut funktioniert.

ranntetruffle compile

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

Writing artifacts to ./build/contracts

undtruffle migrate

$ truffle migrate
Using network 'development'.

Network up to date.

und beide schienen ok.

Das Problem bestand darin, zu versuchen, mit einem Vertrag zu interagierentruffe 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

Wenn es hilft, ist die Struktur des Verzeichnisses

├── 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

Wie kann ich das beheben?

Antworten (3)

Ich habe bei Truffle's Gitter nachgefragt und der Weg, es zu lösen, bestand darin, ein anderes Verzeichnis zu erstellen und das Projekt dort zu ändern. Außerdem befindet sich mein Standardordner für Dokumente auf Google Drive, und ich habe festgestellt, dass ich bei solchen Problemen (auch mit einer privaten Ethereum-Blockchain, die nicht gestartet werden konnte) in einen Ordner verschoben wurde, der sich nicht auf Google Drive befindet (Desktop, usw.) würde es funktionieren.

Ich bin mir nicht sicher, ob dies wirklich eine Sache ist oder nicht, aber es könnte einen Versuch wert sein, wenn Sie in der gleichen Situation stecken.

"Mein Standardordner für Dokumente befindet sich auf Google Drive" bahah
Vielen Dank. Erspart viel Debugging auf meiner Seite. Ich weiß nicht, warum die Synchronisierung mit Google Drive ein Problem sein sollte.

Das kann daran liegen, dass Sie das Paket @truffle/contract nicht haben. Ich hatte das gleiche Problem. Nach dem Ausführen sudo npm install -g @truffle/contractwar das Problem gelöst. Weitere Informationen finden Sie unter https://github.com/trufflesuite/truffle/tree/master/packages/contract .

danke Mcansado, ich hatte das gleiche Problem mit Dropbox. keine Möglichkeit, die in Ganache bereitgestellten Verträge zu sehen, bis sie von Dropbox in den lokalen Festplattenordner verschoben werden. scheint ein Problem zu sein, wenn der RPC-Dienst mit Dropbox oder Google Drive verwendet wird ...