提供一個可以省去一堆麻煩設定(例如設定防火牆、資料庫等等)的空間可以使用。
環境變數
- environment variable: 設定在主機裡的變數
- 在 Node.js 拿取環境變數:
process.env.變數名稱
常用於存取敏感資訊,這樣敏感程式碼就不會直接看到。
使用範例 1
test.jsconsole.log(process.env.ABC)
CLI:
ABC=123 node test.js // 設定 ABC = 123
output: 123 // process.env.ABC 拿 ABC 的值
- 使用範例 2
CLI:
設定環境變數
export UNAME=5566
拿取值 兩者皆可
echo $UNAME
node test.js
output: 5566
部署步驟
git 設定補充:
- 建立 git:
git init
- 建立 gitignore 檔,把
node_modules/
放進去 - 把檔案加入 git:
git add .
- commit:
git commit -am init
- 在 heroku 建立 app:
heroku create
- 把 branch push 到 heroku:
git push heroku master
- heroku clearDB 資料庫斷線問題:
參考資料:解決MySQL Error: Connection lost. The server closed the connection的方法
- heroku URL
mysql://b5b216222d238d:23a766bc@us-cdbr-east-02.cleardb.com/heroku_09baaabca9d382c?reconnect=true // username: be6c96a16xxxd // password: c504fxxx // host: us-cdbr-iron-east-05.cleardb.net // database: heroku_e8d000339887xxx
註:heroku 會員密碼前面有「!」
同場加映:部署 json server 至 heroku 遇到的錯誤
錯誤顯示:
heroku Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
解決方法:
const HOST = process.env.HOST || '0.0.0.0';
const PORT = process.env.PORT || 3310;
server.listen(PORT, HOST, () => {
console.log('JSON Server is running: http://localhost:' + PORT);
});
PORT 與 HOST 都要加到 listen!!!
heroku 資料庫 crash
log: This database engine version is not supported, please update your database server.
先 heroku addons:upgrade
變成升級要錢的方案
然後去 heroku 調整 ClearDB 的 add-ons 調回免費的就好了 不知道為什麼。