Blockchain - 安裝 Web3.js

把智能合約放到網頁上

Posted by BY HzYu on October 20, 2018

如果要把智能合約放到網頁上

就必須使用 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 成功之後,再來要安裝 web3testrpc

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 連接到哪一個節點上


參考引用

truffle 讀寫問題