PAGE TOP


Node.jsアプリをHerokuにアップロードする

2017年3月15日Node.js

Node.jsで簡単なスクリプトをHerokuで動かしてみました。使ってみた印象としては、VPSやローカル仮想環境のほうが使いやすい印象です。FTPやSSH接続できないのが慣れない点です。数年前に、Ruby on railsのアプリをアップロードして以来、ずっと利用していませんでしたが、久しぶりに、いろいろアップロードしてみると、アプリが5個までと制限があり(クレジット未確認の場合)、ちょっとがっかりしました。メモ程度に手順を書いてみます。

まずは、利用のためには、Herokuにアカウントを作ることと、Heroku Command Line Interface (CLI)のインストール。今回は、Windowsの環境にあわせて、64-bt版をインストールしました。また、アップロードでは、gitからの操作が必要となるので、こちらもインストールされていることが前提ですが、CLIをインストールする時に、gitのチェックボックスをonにしておけば、いっしょにインストールされます。

Herokuにアップロードした際に、自動で起動できるように、Procfile ファイルを作り、その中に、起動させるファイルを記述します。(下記は、server.jsよりサーバーを起動という意味)
Procfile

web: node server.js

これがないと、アップロードしても動きません。
他には、package.jsonファイルに必要事項を定義しておきます。

あと、node_modulesフォルダの中身は、package.jsonに定義してあるので、自動的に使えます。従って、こちらは、アップロードする必要がないので、.gitignoreファイルを作り、その中に、node_modules と一行だけ記述し、gitから無視されるようにします。node_modulesフォルダをまとめてアップロードしても、アプリは起動しますが、最大300 MBと制限があるので、気になる方は、.gitignoreファイルを作ってください。

まずは、gitを起動させ、完成しているNode.jsのアプリのフォルダのリポジトリを作成する。このあたりはgitの説明なので簡潔に説明します。

①利用するディレクトリの階層でフォルダの利用を宣言する。
git init //作業用ディレクトリの宣言

②ステージエリアに登録
git add [フォルダ名]   //git add . の場合は、全て

③リポジトリ
データの保存
git commit -m “xxxxxx” //メッセージが必要の場合のみ

コミットしたあとに、その後、Herokuにログインします。

heroku login

これより、Email: と Password: の入力が求められます。これによりコマンド上でログインする。

heroku create [name]   //アプリのスペースを作る。 2度目から不要。
git push heroku master   //作ったアプリにプッシュする。

ログアウトして、次にプッシュする場合は、アプリを作成する必要はありませんが、作成されたアプリを選択する必要があります。

heroku git:remote -a [name]   //[name]の部分は作成したアプリで指定する。

プッシュに失敗した場合は、エラーが出るので、エラー内容を読んでみます。

今回、サンプルアプリをアップする際にあったエラーとしては、package.jsonでのバージョンの指定ミスです。特に、例とて、
node.jsのバージョンが、”6.10″ 、fsモジュールのバージョン指定が”0.0.1″の場合でも動きません。このあたりは、正式なバージョン名で記述する必要があるようなので、ローカルのコマンドより確認して(node -v や npm info fs のように)、そこにある形式で表記する必要があります。この場合は、”6.10.0″、”0.0.1-security”とすることで解決しました。

package.json

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "6.10.0"
  },
  "dependencies": {
    "fs": "0.0.1-security",
    "http": "*",
    "websocket": "*",
    "url": "*"
  }
}