Node.js
Heroku
Express

Node.js + ExpressをHerokuに公開

More than 1 year has passed since last update.

簡単に公開できると思ったら、想像以上にハマったので自分用にメモ。今思えば、ググって見つるかる情報と、自分が使うバージョンが違ったからなのが原因だったのかも。

開発環境

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"からもエラーは見れるので、やっぱり頑張る。

終わり

これで全て網羅できているはず。思い出しながら書いているので漏れがあったらごめんなさい。あくまで自分用のメモということで。