Truffle
遷移後 Truffle 不會在 build/contracts/contract.json 中添加“網路”
問題
Truffle不會
build/contracts/contract.json
在遷移後向文件添加“網路”。正在執行的版本
- 松露 v4.0.1(核心:4.0.1)
- Solidity v0.4.18 (solc-js)
- EthereumJS TestRPC v6.0.3 (ganache-core: 2.0.2)
- MacOS High Sierra 10.13.1
我已經嘗試過的
- 降級松露:我試圖從松露版本降級
4.0.4
到版本4.0.0
,然後4.0.1
測試它是否與松露版本有關,但不幸的是我遇到了同樣的問題。
truffle.js
文件如下所示:module.exports = { networks: { development: { host: "localhost", port: 8545, network_id: "*" // Match any network id } } };
- 我也嘗試使用 9545 埠執行
$ truffle develop
,但遇到了同樣的問題。錯誤資訊
當我執行時,
$ truffle test
我收到以下錯誤消息:錯誤:尚未將 TestContract 部署到檢測到的網路(網路/工件不匹配)
有什麼作用
當我執行時
$ truffle migrate --reset
,我的build/contracts/Migrations.json
文件確實具有指定的網路,例如:... "networks": { "1516203204392": { "events": {}, "links": {}, "address": "0xa10a9e84eb3ef0bf7ebc1b6337c20031b5a80e69" } }, ...
我遇到過同樣的問題,
仔細觀察,問題出在
2_deploy_contracts.js
. 執行truffle migrate --reset
的時候留意一下文本Saving artifacts...
,還要看看是在哪個合約部署之後出現的,在這之後就是遷移文件中的問題。我在那裡有一些非同步/等待,顯然程式碼會執行,但編寫工件有一些時間限制,並且在第三次合約部署之後執行,因此我的合約中只有 3 個已
networks
填充並且為空。希望這可以幫助像我這樣犯這種愚蠢錯誤的人。
在我的情況下,我忘記在遷移中添加
async
/呼叫。因此,遷移永遠停滯/卡住了。await``await