LoginSignup
10
7

More than 5 years have passed since last update.

Herokuでexpress+MongoDB

Posted at

expressとMongoDBを使ったWebアプリをHeroku上にデプロイできるかチャレンジしたよ。
Qiitaにもちょいちょい手順が載っているけど、最新のherokuだとちょっと手順が違うみたい。

https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction
ここの手順にしたがって進めてみる。

1) Heroku Toolbeltをダウンロードしてインストールする

2)ターミナルから「heroku login」でログインできることを確認
 HerokuToolbeltにアップデートがあれば更新されます。
 
3)デプロイしたい環境のトップディレクトリで(まだやってなければ)
 git init
 .gitignore編集(node_modulesなど指定しておく)
 git add .
 git commit -m "hoge"
 としておく

4) 「heroku create」でアプリ生成。アプリ名を指定したい場合は引数で指定する

5)「git push heroku master」でpushする
package.jsonがあれば自動で依存モジュールは
インストールしてくれるみたいです

が、ここでハマる

package.jsonで「FeedParser」と指定していたのだけど、not foundと言われてエラーになる。ローカルだと見つかってますがなと試行錯誤した末「feedparser」としたら成功しました。

6)「heroku ps:scale web=1」インスタンス数を指定する

とりあえずデプロイはこれでOK。
pushしたときにアドレスが出ているのでアクセスできることを確認。
お次にMongoDBのセットアップ。
HerokuのAddOnから設定します。
Sandbox版なら無料で使えるmongolabを使います。

Sandboxを選択した状態で右下にコマンドが出ているのでコピーしてコンソールにで実行します。
カード情報を登録していないとエラーになるので無料でも登録しておきます。

コマンドが正常に終わればherokuのダッシュボードから対象のアプリを選択すると「mongolab」がAddonとして追加されているのでクリックするとmonglabの設定ページに飛びます。
mongoのシェルでのアクセス手順なんかも載っています。
また、コマンドラインから「heroku config」とやると「MONGOLAB_URI」としてアクセス先が載っています。
この中にdbsuserとdbpasswordが載っているのでチェックしましょう。

db名は変えられません。「use hoge」なんてやって操作すると「not authorized」と怒られます。

MONGOLAB_URIの値でmongoose.connectしてやればmongoDBにアクセスできます。
思いのほか、ハマらずに行けました。

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7