A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://devcenter.heroku.com/ja/articles/deploying-nodejs below:

Heroku での Node.js アプリのデプロイ | Heroku Dev Center

最終更新日 2024年12月04日(水)

この記事では、既存の Node.js アプリを Heroku にデプロイする方法について説明します。

Heroku をはじめて使う場合は、「Heroku スターターガイド (Node.js)​」を参照してください。

前提条件

この記事では、以下が用意されていることを前提としています。

概要

Heroku の Node.js サポートは、アプリケーションがルートディレクトリに package.json​ ファイルを持つ場合にのみ適用されます。

詳細は、「Heroku の Node.js サポート​」を参照してください。

アプリ依存関係の宣言

package.json​ ファイルは、アプリケーションと一緒にインストールする依存関係を定義します。アプリの package.json​ ファイルを作成するには、アプリのルートディレクトリで npm init​ コマンドを実行します。package.json​ファイルの作成方法が表示されます。すべてのプロンプトをブランクのままにしてスキップすることができます。

​git bash​ アプリケーションを使用して、Windows でコマンドシェルを開きます。CLI のインストールで、このアプリケーションのショートカットがデスクトップに追加されました。

$ cd node-example
$ npm init
...
name: (node-example)
version: (1.0.0)
description: This example is so cool.
entry point: (web.js)
test command:
git repository:
keywords: example heroku
author: jane-doe
license: (ISC) MIT
...

生成された package.json​ ファイルは次のようになります。

{
  "name": "node-example",
  "version": "1.0.0",
  "description": "This example is so cool.",
  "main": "web.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "example",
    "heroku"
  ],
  "author": "jane-doe",
  "license": "MIT"
}

依存関係をインストールするには、npm install <package>​ を使用します。これにより、パッケージも依存関係として package.json​ ファイルに追加されます。たとえば、express​ をインストールするには、npm install express​ と入力します。

システムレベルのパッケージに依存していないことを確認してください。package.json​ファイル内に依存関係が存在しないと、Heroku にデプロイするときに問題が発生します。この問題をトラブルシューティングするには、ローカルコマンドラインで rm -rf node_modules; npm install --production​ と入力し、heroku local web​ と入力してアプリをローカルで実行してみます。package.json​ファイル内に依存関係が存在しない場合、モジュールが見つからないことを示すエラーが表示されます。

Node バージョンの指定

Heroku 上でアプリケーションを実行するために使用する Node.js のバージョンを package.json​ ファイル内で指定します。常に、開発やテストで使用しているランタイムに一致する Node.js バージョンを指定します。バージョンを確認するには、node --version​ と入力します。

package.json​ ファイルは次のようになります。

"engines": {
  "node": "22.x"
},

Node.js のバージョンスキーマでは、奇数バージョンは不安定で、偶数バージョンは安定しています。安定したブランチはバグ修正のみを取得します。

依存関係がインストールされ、Node のバージョンが指定されると、package.json​ ファイルは次のようになります。

{
  "name": "node-example",
  "version": "1.0.0",
  "description": "This example is so cool.",
  "main": "web.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "example",
    "heroku"
  ],
  "author": "jane-doe",
  "license": "MIT",
  "dependencies": {
    "express": "^4.9.8"
  },
  "engines": {
    "node": "22.x"
  }
}

開発環境と本番環境は、できるだけ似た環境に保つことをお勧めします。ローカルの Node.js のバージョンが、Heroku で使用するように package.json​ ファイルで指示したバージョンに一致するようにしてください。ローカルで実行しているバージョンを確認するには、コマンドラインで node --version​ と入力します。

開始スクリプトの指定

アプリを開始する方法を調べるために、Heroku は最初に Procfile​ を検索します。Node.js アプリ用の Procfile が存在しない場合、package.json 内の開始スクリプト​ を介してデフォルトの web​ プロセスの開始を試行します。

Web プロセスタイプ内のコマンドは、PORT​ 環境変数に指定されている​ポート番号にバインドする必要があります。そうしないと、dyno は起動しません。

詳細は、「Node.js 開発のためのベストプラクティス​」および「Heroku の Node.js サポート​」を参照してください。

アプリのビルドとローカルでの実行

package.json​ ファイル内で宣言した依存関係をインストールするには、ローカルアプリディレクトリで npm install​ コマンドを実行します。

$ npm install

heroku local​ コマンドを使ってアプリをローカルで起動します。このコマンドは、Heroku CLI の一部としてインストールされています。

$ heroku local web --port 5001

これで、http://localhost:5001/​ でアプリが実行されます。

ビルド成果物を Git の外部に保持する方法

node_modules​ を Git にチェックインするとビルドキャッシュが使用されなくなるため、この方法は推奨しません。詳細は、「ビルドの動作​」を参照してください。

次のような .gitignore​ ファイルを作成することによって、ビルド成果物がリビジョン管理の対象に入らないようにします。

/node_modules
npm-debug.log
.DS_Store
/*.env
Heroku へのアプリケーションのデプロイ

変更内容を Git にコミットしたら、アプリを Heroku にデプロイできます。

$ git add .
$ git commit -m "Added a Procfile."
$ heroku login
Enter your Heroku credentials.
...
$ heroku create example-app
Creating example-app... done, stack is cedar
http://example-app-1234567890ab.herokuapp.com/ | git@heroku.com:arcane-lowlands-8408.git
Git remote heroku added
$ git push heroku main
...
-----> Node.js app detected
...
-----> Launching... done
       http://example-app-1234567890ab.herokuapp.com deployed to Heroku

アプリをブラウザで開くには、heroku open​ と入力します。

データベースのプロビジョニング

add-on marketplace​ には、Postgres、Redis、MongoDB、MySQL などの多数のデータストアが揃っています。

次のステップ

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4