node.jsを使いlocalhostでチャットなどのWebアプリを簡単に作ることはできます。これを他の人が見えるようデプロイする場合、herokuを使うと簡単です。ただ、2点つまづいたので、記録に残します。
ガイドを見ながらまずは学ぶ
Heroku スターターガイド (Node.js)を見ながら、アプリのデプロイ方法を学びます。
このガイドに書かれているのは、サンプルで用意されているアプリをダウンロードしてデプロイする方法でした。
今回は自分のPCにある、ローカルアプリをデプロイしたいため、とりあえず「ローカルの変更をプッシュする」の項目までガイドを確認すればよさそうです。
しかし、「heroku open」でローカルにあったアプリを起動しようとすると、ブラウザに「Application error」と表示されます。
「heroku logs –tail」でログを見ながら解決します。
package.jsonに起動するjsの記述が必要
node.jsサーバーを起動させる命令を、package.jsonに書かないと何もできません・・・。
1 2 3 |
"scripts": { "start": "node index.js" } |
ログでは、startできません!とエラーが出ていました。
1 2 |
2021-01-15T14:30:38.987295+00:00 heroku[web.1]: Starting process with command `npm start` 2021-01-15T14:30:43.018177+00:00 app[web.1]: npm ERR! missing script: start |
ローカルでは、コマンドプロントやターミナルで「node index.js」を起動していて忘れがちですが、”start”: “node index.js”を書く必要がありました。
ポートは環境変数を指定
node.jsでサーバーを立ち上げるとき、ローカルではポート3000としていました。しかし、これではエラーがでます。ガイドと同じ5000にしても、やはり下記のようなエラーがでます。
1 |
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch |
サンプルのコードは、ポートを環境変数、なければ5000と指定しているようです。
1 |
const PORT = process.env.PORT || 5000 |
ポートを書き換えることで、無事アプリが起動しました。