1. 程式人生 > 實用技巧 >初入DApp——配置環境到差點放棄的辛酸血淚

初入DApp——配置環境到差點放棄的辛酸血淚

本文沒有乾貨,只是一個記錄(防止以後……),並且通過寫一篇水文發洩我心中積鬱的情緒!!!!!

前言

阻擋我學習腳步的不是技術有多難,而是配環境,配環境要了命,這次是最要命的!!!!
想上手做個dapp,一方面自己初學,一方面看的白嫖教程太舊,導致很多坑!!!!

虛假的順暢過程

首先最終完整版的truffle配置過程
我的最後環境:
Kali linux 2020
Node 8.11.3
Npm 5.6.0
Truffle 4.1.12
ganache-cli 6.10.1
全程我是在root許可權下操作

  • 安裝node

apt-get install nodejs

  • 安裝npm

apt-get install npm

  • 配置npm源為國內源,加快下載速度:

npm config set registry http://registry.npm.taobao.org

  • 安裝指定的node 版本
npm install -g n
n v8.11.3
  • 安裝指定版本的truffle

npm install -g [email protected]

  • 安裝ganache-cli

npm install -g ganache-cli

進入驗證環節

  • 新建目錄

mkdir test

  • 進入目錄

cd test

  • 拉取一個模板

truffle unbox webpack

  • 啟動
    ganache-cli
  • 修改專案中的truffle.js
形如:
module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 8545,
      network_id: "*" // Match any network id
    }
  }
};
  • 然後編譯

Truffle compile

  • 部署

truffle migrate

  • 進入控制檯

truffle console

真實的辛酸

然後回顧我這慘烈的兩天
以前瞭解點區塊鏈,也看了一點以太坊的書,然後翻了solidity的文件
https://learnblockchain.cn/docs/solidity/installing-solidity.html#id4


因為下學期要做一個專案,思來想去決定跟著視訊做一個dapp,邊學遍配,然後噩夢開始了


先在我的windows上
安裝ganache,我想安裝圖形化的,結果下載半天沒反應,就找到別人下載好的資源,發現開啟,半天沒反應,放棄,下載Ganache命令列版的吧


在拉取truffle unbox webpack時,大概有這樣的錯誤

D:\truffle\my_dapp>truffle unbox webpack

Starting unbox...
=================

√ Preparing to download box
× Downloading
Unbox failed!
× Downloading
Unbox failed!
RequestError: Error: getaddrinfo ENOENT raw.githubusercontent.com
    at new RequestError (C:\Users\AppData\Roaming\npm\node_modules\truffle\build\webpack:\node_modules\request-promise-core\lib\errors.js:14:1)
    at Request.plumbing.callback (C:\Users\AppData\Roaming\npm\node_modules\truffle\build\webpack:\node_modules\request-promise-core\lib\plumbing.js:87:1)
    at Request.RP$callback [as _callback] (C:\Users\AppData\Roaming\npm\node_modules\truffle\build\webpack:\node_modules\request-promise-core\lib\plumbing.js:46:1)
    at self.callback (C:\Users\AppData\Roaming\npm\node_modules\truffle\build\webpack:\node_modules\request\request.js:185:1)
    at Request.emit (events.js:223:5)
    at Request.onRequestError (C:\Users\AppData\Roaming\npm\node_modules\truffle\build\webpack:\node_modules\request\request.js:881:1)
    at ClientRequest.emit (events.js:223:5)
    at TLSSocket.socketErrorListener (_http_client.js:415:9)
    at TLSSocket.emit (events.js:223:5)
    at emitErrorNT (internal/streams/destroy.js:92:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
    at processTicksAndRejections (internal/process/task_queues.js:81:21)
Truffle v5.1.39 (core: 5.1.39)
Node v12.15.0

解決

通過https://www.ipaddress.com   查詢 raw.githubusercontent.com 的地址。
配置host檔案  C:\Windows\System32\drivers\etc\host   增加地址
199.232.68.133  raw.githubusercontent.com
我是直接就加了上面這個
Linux是進入/etc/hosts 中新增
199.232.68.133  raw.githubusercontent.com

Truffle compile時有如下錯誤,然後噩夢就開始了

× Fetching solc version list from solc-bin. Attempt #1
× Fetching solc version list from solc-bin. Attempt #2
× Fetching solc version list from solc-bin. Attempt #3
Error: Could not find a compiler version matching 0.5.16. Please ensure you are specifying a valid version, constraint or build in the truffle config. Run `truffle compile --list` to see available versions.
    at VersionRange.errors (C:\Users\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\compile-solidity\compilerSupplier\loadingStrategies\LoadingStrategy.js:66:1)
    at VersionRange.getSatisfyingVersionFromCache (C:\Users\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\compile-solidity\compilerSupplier\loadingStrategies\VersionRange.js:81:1)
    at VersionRange.load (C:\Users\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\compile-solidity\compilerSupplier\loadingStrategies\VersionRange.js:197:1)
Truffle v5.1.39 (core: 5.1.39)
Node v12.15.0
  • 嘗試一

在專案下truffle-config.js中指定編譯版本

  compilers: {
    solc: {
      version: "0.4.23",           
    },
  },

各種版本都試了,不行
然後又有說許可權問題

  • 嘗試二,三,四……

我就在ubuntu上重複,還是不行
然後又有說重試幾次就好了,重試了無數次,無用
又有說網路問題,我就換熱點,甚至學會了上外網,還是不行

  • 冷靜分析

然後憑我多年被配環境折磨支配的大腦的冷靜的思考,我覺得可能是版本問題,然後就準備換node npm等版本,但是一頓解除安裝,重灌胡亂操作,把我原本的node,npm也弄沒了,裝也裝不了
嗚嗚嗚嗚嗚嗚


我怎麼可能被打敗!!!!!

我又掏出新環境,我的kali 2018來配,結果發現npm有問題

沒辦法我又裝了kali 2020

先把科大的源寫入vim /etc/apt/sources.list
再 apt-get update
Apt-get upgrade
然後安裝以上環境,終於成功了,就是拉取模板truffle unbox webpack時

ownloading...
Error: Truffle Box at URL https://github.com/truffle-box/webpack-box doesn't exist. If you believe this is an error, please contact Truffle support.
    at Request._callback (/usr/local/lib/node_modules/truffle/build/webpack:/.-box/lib/utils/unbox.js:50:1)
    at Request.self.callback (/usr/local/lib/node_modules/truffle/build/webpack:/Users/gnidan/src/work/truffle/~/request/request.js:185:1)
    at emitTwo (events.js:126:13)
    at Request.emit (events.js:214:7)
    at Request.<anonymous> (/usr/local/lib/node_modules/truffle/build/webpack:/Users/gnidan/src/work/truffle/~/request/request.js:1157:1)
    at emitOne (events.js:116:13)
    at Request.emit (events.js:211:7)
    at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/truffle/build/webpack:/Users/gnidan/src/work/truffle/~/request/request.js:1079:1)
    at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:111:20)

直接通過git clone +報錯中的Url就好了

後記

當看到成功時,已經連續兩天半1點半睡,7點多起,今天中午飯沒吃,已經連續坐了好幾個小時的我,激動地乾嘔,想哭,太不容易了,嗚嗚嗚嗚嗚

期間還遇到很多錯誤,但因為cup爆到90%,並且心煩意亂,很多都沒有記錄

最後是我的部分參考連結,很多找不到了

https://blog.csdn.net/luoluobaby/article/details/104462863
https://blog.csdn.net/zxs9999/article/details/107079329
[https://blog.csdn.net/TurkeyCock/article/details/79165602?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param]https://blog.csdn.net/TurkeyCock/article/details/79165602?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param()
https://blog.csdn.net/qq_20513027/article/details/85041353
https://www.cnblogs.com/liaozhenghan/p/12484398.html

https://zhuanlan.zhihu.com/p/83253046