簡単に公開できると思ったら、想像以上にハマったので自分用にメモ。今思えば、ググって見つるかる情報と、自分が使うバージョンが違ったからなのが原因だったのかも。
開発環境
ubuntu v16.04.3
node v6.11.1
npm v5.3.0
express-generator v4.13.0
公開までの手順
これをやれば公開できたという道筋を書いていく。ハマったところはメモを残す。
app.jsonの作成
{
"name": "XXXXXXXXXX",
"description": "XXXXXXXXXX",
"logo": "",
"keywords": ["node"],
"image": "heroku/nodejs"
}
XXXのところは適宜変更。
package.jsonの編集
"engines": {
"node": "6.11.1",
"npm": "5.3.0"
}
これを追記。バージョンは適宜変更。
Procfileを作成
web: node ./bin/www
ここで注意したいのは、"./bin/www"の部分は、package.jsonの "scripts": { "start": "XXX" } の内容を書く必要があるということ。ググって出てきた、app.jsとか、index.jsとかを真似してHerokuに怒られた。
app.jsを編集
// Heroku
app.set('port', (process.env.PORT || 8000));
Herokuで使用されるPORTの環境変数を追記する。また、ローカルで動かせるように自分で使っているポート番号をORで残しておく。
.gitignoreを編集
これは人によってだと思うが、アプリの起動に必要なファイルがgitignoreに登録されていたら外しておく。ローカルで動いて、Herokuで動かないというバグが起こる。
gitにコミット
git add .
git commit -m "Herokuに対応"
ここまで出来たらコミット。
Herokuへ公開
heroku login
heroku create XXX
heroku git:remote -a XXX
git push heroku master
これで完了。Herokuのアカウントをまだ持ってない人は先に作って、CLIで動かせるようにすること。
もしハマったら...
heroku logs
エラーが見れるので頑張る。また、Herokuの"View logs"からもエラーは見れるので、やっぱり頑張る。
終わり
これで全て網羅できているはず。思い出しながら書いているので漏れがあったらごめんなさい。あくまで自分用のメモということで。