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?
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.
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/contract
war 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 ...
0TTT0
Teil Patel