Node.js モニターである Nodemon の操作
Nodemon は、ディレクトリ内のファイルの変更を識別したときにノード アプリケーションを動的に再起動することにより、Node.js アプリの構築を支援するコマンドライン インターフェイス ユーティリティです。
この記事では、特定のニーズに合わせて nodemon をインストールおよび構成する方法と、nodemon の使用時に発生する一般的なエラーについて説明します。
ノードモンを使用する理由
Web サーバーやバックエンド アプリを開発する場合、コードを変更してエラーを処理し、プログラムの構造とロジックを改善する必要があります。
Nodemon は、サーバーのコードに変更を加えると、サーバーを自動的に再起動することで支援します。これにより、時間を節約でき、デバッグが容易になります。
ノードモンのインストール方法
Nodemon は、開発の依存関係としてローカルにインストールすることも、システム パスにグローバルにインストールすることもできます。
nodemon をグローバルにインストールするには、コンピューターのターミナルで次の npm コマンドを実行します。
npm install nodemon --globally
nodemon をローカルにインストールするには、ターミナルのプロジェクト ディレクトリ内で次の npm コマンドを実行する必要があります。
npm install nodemon --save-dev
Web サーバー アプリケーションで Nodemon を起動する
nodemon を起動して Web サーバー アプリケーションを監視するには、いくつかの手順が必要です。以下のコード ブロックは、文字列メッセージをコンソールに記録するサーバーの基本的なスクリプトです。
// app.js
const express = require('express');
const app = express();
app.listen((5000), ()=>{
console.log(`I'm learning about nodemon`)
});
このスクリプトの監視を開始するには、監視対象のファイル名を指定して nodemon コマンドを実行します。
nodemon app.js
結果の出力には、次のテキストのようなものが含まれているはずです。
[nodemon] starting `node app.js`
I'm learning about nodemon
nodemon が正常に開始されると、app.jsファイルに変更を加えると、サーバー アプリ全体がリロードされます。
コンピューターのターミナルでCtrl + Cを押すと、nodemon を終了できます。rsコマンドを入力して、nodemon プロセスを手動で再起動することもできます。
コマンドライン オプションで Nodemon を使用する
Nodemon には、その動作を変更するために使用できるいくつかのコマンドライン オプションがあります。
使用可能なすべての nodemon オプションとその機能のリストを表示するには、次のコマンドを実行します。
nodemon --help options
利用可能な多くのオプションの中には、次のものがあります。
- –delay : ファイルが変更されると、nodemon はデフォルトで 1 秒待ってからプロセスを再起動します。— delayスイッチを使用して別の遅延を指定できます。nodemon が再起動するまでの待機時間を選択できます。例えば:
nodemon --delay five app.js
- –ignore : ignore スイッチ オプションを使用すると、Web サーバー アプリケーション内の特定のファイルを無視できます。次のように switch オプションを使用できます。
nodemon --ignore lib/app.js
- –watch : デフォルトでは、実行時に nodemon は現在の作業ディレクトリを監視します。このオプションを制御するには、—watch オプションを使用して特定のファイル パスを追加し、監視するディレクトリを変更します。たとえば、サーバー ディレクトリを監視するには、次のようにします。
nodemon --watch server
- –exec : JavaScript ユーティリティですが、Nodemon を使用して TypeScript、Python、Golang などの非 JavaScript ファイルを監視することもできます。— execオプションを使用すると、そのようなスクリプトで nodemon の自動リロード機能を取得できます。たとえば、TypeScript スクリプトで nodemon を使用すると、次のようになります。
nodemon --exec ts-node
- –ext : Nodemon はデフォルトで、JavaScript、TypeScript、CoffeeScript、および JSON 拡張子を持つファイルを検索します。これは、Node.js プロジェクトが、実行前に純粋な JavaScript にコンパイルされる TypeScript および CoffeeScript ファイルを操作できるためです。一方、JSON ファイルも Node.js プロジェクトのメタデータの保存に使用されることが多いため、監視されます。– e (または — ext ) スイッチを使用して、監視するファイルのカンマ区切りリストを指定できます。たとえば、拡張子が.js、.json、および.mjsのファイルを監視するには、次のようにします。
nodemon --ext js,json,mjs
Nodemon 構成ファイルの使用
Nodemon は、ローカルおよびグローバルの構成ファイルをサポートしています。これらは、ホーム ディレクトリまたはプロジェクトのルート ディレクトリにあります。これらは通常、nodemon.jsonファイルと呼ばれます。このようにして、nodemon 構成を保存し、他のプロジェクトで簡単に再利用できます。
コマンド ライン オプションは、常に構成ファイルの設定を上書きします。作業の優先順位には、コマンドライン オプション、ローカル、および構成ファイルが含まれます。
構成ファイルでは、任意のコマンド ライン オプションを JSON キー値として使用できます。
例えば:
{
"watch": [ "server" ],
"ext": [ "js", "ts", "json" ],
"delay": "5000",
"ignore": [ "lib/app.js" ]
}
上記のnodemon.jsonファイルでは、nodemon はサーバーディレクトリを監視し、 .js、.ts、および.json拡張子を持つファイルを指定し、ファイルの変更後に再起動する前に5秒間遅延し、最後にlib/appのファイルの変更を無視するように設定されています。 .js.
別の方法として、すべてのパッケージ構成を 1 つの場所に保持する場合、nodemon は構成にpackage.jsonを使用することをサポートします。package.json ファイルの nodemonConfigで、構成ファイルと同じ形式で構成を指定します。
たとえば、この package.json ファイルには、上記の nodemon.json ファイルと同じ構成が含まれています。
{
"name": "nodemon",
"version": "",
"description": "",
"nodemonConfig": {
"watch": [
"server"
],
"ext": [ "js", "ts", "json" ],
"delay": "5",
"ignore": [
"lib/app.js"
]
}
}
Nodemon エラーの処理
アプリの開発中は、途中で JavaScript のエラーを処理する必要があります。これらのエラーを処理するには、まずエラーが発生する理由を知る必要があります。
nodemon を使用しているときに発生する可能性のある一般的なエラーを次に示します。
[nodemon] app crashed - waiting for file changes before starting...
このエラー メッセージが表示される理由はいくつかあり、原因を修正する方法もいくつかあります。
- nodemon が監視しているファイルの JavaScript 構文が正しくありません。このエラーを防ぐには、JavaScript コードを調べて、コード内の構文エラーを特定します。
- バックグラウンドで複数のタスクを実行すると、この特定のタスクに干渉する可能性があります。これを修正するには、すべてのバックグラウンド プロセスを停止し、プログラムを再度実行してみてください。
- 不適切なディレクトリ編成も問題を引き起こす可能性があります。たとえば、app.js ファイルと package.json ファイルが同じディレクトリにない場合です。プログラムの実行に影響を与えないように、ディレクトリを適切に構成してください。
ノードモンに慣れる
nodemon の有用性と、nodemon がどのようにワークフローを改善し、エラーを減らし、デバッグをより迅速かつ簡単にするかについて説明しました。
ただし、nodemon を使用しているときにエラーが発生する可能性があります。開発者として、これらのエラーのトラブルシューティング方法を学ぶことは重要です。
コメントを残す