Truffle

遷移後 Truffle 不會在 build/contracts/contract.json 中添加“網路”

  • March 16, 2022

問題

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

我已經嘗試過的

  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
    }
  }
};
  1. 我也嘗試使用 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

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