如果要把智能合約放到網頁上
就必須使用 Web3.js 提供的 Web3
但我在安裝過程中發生許多的錯誤與問題,藉此紀錄下來
Windows 和 Mac 安裝過程中的錯誤不太相同
這篇文章主要是針對 Mac
安裝 Web3.js
在 Web3.js
GitHub 官方有教學安裝的步驟
可以先去看看裡面安裝步驟
首先先在桌面創一個資料夾(Smart_Contract)
開啟 Terminal
ls
查看目錄下有什麼檔案
把路徑指向剛剛創的資料夾(Smart_Contract)
ex: cd <Smart_Contract>
在目錄底下之後,就可以開始安裝 Web3.js
在安裝 Web3
之前 ,先去下載 Node.js
下載完成後,我們查查看 Node
是否正確安裝完成
確認完成安裝之後,輸入以下指令,開始安裝 Web3
npm install web3
如果找不到 npm
指令,就是 node 沒有安裝完全
安裝之後,會出現以下錯誤
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:345:16)
gyp ERR! stack at emitTwo (events.js:126:13)
gyp ERR! stack at ChildProcess.emit (events.js:214:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
gyp ERR! System Darwin 17.7.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/hz_yu/Desktop/Smart_Contract/node_modules/scrypt
gyp ERR! node -v v8.12.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
目前我在網路上找到有人是說 xcode 版本過低的問題
也有許多其他解決辦法,但有些試過都還是會繼續錯誤下去
比較多人建議是直接安裝 web3.js 0.2.0
版本
npm install web3@^0.20.0
輸入完成之後,會出現以下警告
他的意思是說,在你的目錄底下,沒有找到一個叫package.json
的檔案
npm WARN saveError ENOENT: no such file or directory, open '/Users/hz_yu/Desktop/Smart_Contract/package.json'
npm WARN enoent ENOENT: no such file or directory, open '/Users/hz_yu/Desktop/Smart_Contract/package.json'
npm WARN Smart_Contract No description
npm WARN Smart_Contract No repository field.
npm WARN Smart_Contract No README data
npm WARN Smart_Contract No license field.
所以我們要生成一個package.json
檔給他
npm init -f
輸入指令完之後,他會自動生成 package.json
給你
再安裝一次 web3.js 0.2.0
npm install web3@^0.20.0
安裝成功後,會出現以下圖
黃色框框部分,只是說package.json
裡面的資訊沒有寫完整
這部分不影響安裝,就先不理會他
web3.js 0.2.0
都安裝完成後,要開始安裝 Truffle
安裝 Truffle
Truffle
是個Ethereum開發框架,它整合了編譯、部署、測試
輸入以下指令
npm install -g truffle
輸入完後,也許會出現以下錯誤
這段的錯誤是說 預設安装位置是/usr/local/lib的系統資料夾
可能會出現一些讀寫權限問題
如果把路徑改到一般資料夾下,就不會發生這種問題
以下解法是官方解法
#創建一個資料夾
mkdir ~/.npm-global
#更改 node 安裝位置
npm config set prefix '~/.npm-global'
# 在profile下增加 path,為系統能夠找到可執行的文件目錄
export PATH=~/.npm-global/bin:$PATH
# update profile 讓它生效
source ~/.profile
輸入完以上指令之後,在安裝一次
npm install -g truffle
安裝完成後,可以輸入以下指令看看有沒有安裝成功
truffle version
Truffle
成功之後,再來要安裝 web3
的testrpc
npm install -g ethereumjs-testrpc
安裝完成之後,執行 testrpc
如果他有錯誤找不到 testrpc
的話
可以輸入以下指令試試看
/Users/hz_yu/.npm-global/bin/testrpc
- hz_yu 改為你的使用者名稱
成功之後會出現以下畫面
以上畫面代表說,testrpc會建立10個帳戶,而且每個帳戶裡有
100 ETH 可以使用
Listening on localhost:8545
是跟我們說節點端口為
localhost:8545
,在使用 web3
的時候,需要傳入地址跟
web3.js
連接到哪一個節點上
參考引用