Contract-Development

為什麼我的合約顯示為未部署在 Truffle 中?

  • February 10, 2020

我正在嘗試使用 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上查看更多資訊。

引用自:https://ethereum.stackexchange.com/questions/24863