web-dev-qa-db-ja.com

Expressjspm2はwatchpublic / imagesフォルダーを無視します

Nodejsを使用しているWebサイトがあります。問題は、ユーザーが画像をアップロードするとサイトが機能しなくなることです。それは、ファイル変更時にサーバーを再起動するPM2のせいだと思います。この問題を解決する方法。ありがとうございました

9
Vuong Tran

PM2には特別なフラグがあります--ignore-watch 国旗。

ファイルを作成してみてくださいprocess.json app.js/index.jsと同じディレクトリに、次のように貼り付けます。

{
  "watch": ["server", "client"],
  "ignore_watch" : ["node_modules", "public/images"],
  "watch_options": {
    "followSymlinks": false
  }
}

そのトピックの詳細: http://pm2.keymetrics.io/docs/usage/watch-and-restart/

14
Rafal Wiliński

実際の経験からの簡単な説明

expressjsアプリケーションのルートフォルダーにjsonファイルを作成します。任意の名前を付けることができますが、わかりやすくするためにpm2-process.jsonを使用しました

{
    "script": "bin/www",
    "watch": true,
    "ignore_watch": ["log"],
    "watch_options": {
        "followSymlinks": false
    },
    "name": "YOUR_PM2_PROCESS_NAME"
}

ターミナルからpm2サービスを開始するには、エクスプレスアプリケーションのルートフォルダーにあります。

pm2 start pm2-process.json

それでおしまい。本当に簡単です。他にも多くのオプションがありますが、これは最低限の機能です。

フィールドの説明:

  • script-Expressアプリケーションを実行するためのスクリプト
  • watch-pm2がフォルダを監視するかどうかを制御するブールフラグ
  • ignore_watch-監視がオンの場合、監視を無視するフォルダーをpm2に指示します(つまり、これは監視モニターの除外リストです)
  • name-pm2プロセスの名前(「サービス」)。選択したアプリケーション名に設定します。

完全なドキュメントはここにあります: http://pm2.keymetrics.io/docs/usage/application-declaration/#attributes-available

注:上記の例では、node_modulesフォルダーをignore_watch配列から除外しました。これは、ノードモジュールに変更を加えるgitpullとnpmiの後にpm2でサービスを再起動するためです。ただし、配列の値を編集することで、node_modulesまたはその他のフォルダー(temp、publicなど)を無視するのは簡単です。

5
BigMan73