初入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