Contract-Development
為什麼我的合約顯示為未部署在 Truffle 中?
我正在嘗試使用 Truffle 通過遵循他們的文件來測試一些契約。按照說明,我已經安裝了 truffle、testrpc,創建了遷移契約並且工作正常。
冉
truffle compile
$ truffle compile Compiling ./contracts/User1.sol... Compiling ./contracts/User2.sol... Compiling ./contracts/Registry.sol... Writing artifacts to ./build/contracts
和
truffle migrate
$ truffle migrate Using network 'development'. Network up to date.
兩者似乎都很好。
問題正在嘗試與使用的契約進行互動
truffe 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
如果有幫助,目錄的結構是
├── 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
我怎樣才能解決這個問題?
我詢問了 Truffle 的 Gitter,解決它的方法是創建另一個目錄並在那裡更改項目。另外,我的預設文件文件夾在 Google Drive 上,我發現每當我遇到這樣的問題(也有一個無法啟動的私有乙太坊區塊鏈)時,將它移動到不在 Google Drive 上的文件夾(桌面,等)會使其工作。
不確定這是否真的是一件事,但如果你遇到同樣的情況,可能值得一試。
這可能是因為您沒有 @truffle/contract 包。我有同樣的問題。執行後
sudo npm install -g @truffle/contract
問題解決。在https://github.com/trufflesuite/truffle/tree/master/packages/contract上查看更多資訊。