52

この両方のパッケージを一緒に実行する方法はありますか?

ですから、基本的には両方の長所を持ちたいと思っています。サーバーを自動的に実行し (エラーが発生した場合は再起動します)、.js ファイルの変更が発生した場合は自動更新します。

4

8 に答える 8

52

Toxa は正しい方向に進んでいました。cfogelberg が提起した問題は有効ですが、その問題を回避するには、次のことを実行できます。

forever -c "nodemon --exitcrash" app.js

これによりnodemon、(「アプリがクラッシュしました」というメッセージが表示されるのではなく) 実際に終了foreverし、再び起動します。

これで実行するコマンドを指定forever --help-cます。それ以外の場合はデフォルトのノードです。-c を指定しないと、この回答のコメントに記載されているエラーが発生します。

于 2013-11-30T23:34:56.590 に答える
15

nodemonFAQにそれに関するエントリがあります。

nodemon を 永遠に (おそらく実稼働環境で) 使用している場合は、2 つを組み合わせることができます。このようにして、スクリプトがクラッシュした場合、スクリプトを完全に再起動し、ファイルが変更された場合、nodemon がスクリプトを再起動します。詳しくは第30号をご覧ください。

これを実現するには、への呼び出しに次を追加する必要があります forever

  • forever の-c nodemonオプションを使用して、 forever のnodemon代わりに実行するように指示しますnode
  • --exitcrashスクリプトがクラッシュした場合 (または予期せず終了した場合) に nodemon が終了するようにするには、nodemonフラグを含めます。
  • nodemon に停止を要求するときSIGTERMの代わりに、永久に使用するように指示します。SIGKILLこれにより、nodemon は監視対象のノード プロセスを確実に停止できます。
  • 必要に応じて--uidパラメーターを追加し、プロセスに一意の名前を追加します。この例では、uid は に設定されていfooます。

bash forever start --uid foo --killSignal=SIGTERM -c nodemon --exitcrash server.js

これをテストするには、server.js プロセスを強制終了し、永遠に再起動します。touch server.jsnodemon が再起動する場合。

forever と nodemon によって監視されているプロセスを停止するには、uid上記で割り当てた ( foo)を使用して、以下を呼び出すだけです。

bash forever stop foo

これにより、nodemon とそれが監視していたノード プロセスの両方が停止します。

実稼働環境でnodemonを使用することはお勧めしませんが、明示的な指示なしに再起動したくないためです。

于 2015-05-26T12:00:48.693 に答える
10

両方のパッケージを一緒に実行する方法が見つかりませんでした。@toxa の手法を実行しようとしましたが、node.js アプリが例外をスローしたとき、nodemon は自動的にアプリを再起動せず、代わりに永久ログにエラー メッセージを出力しました。

nodemon] app crashed - waiting for file changes before starting...

ただし、forever には-wオプションがあり、次のコマンドは事実上、nodemon と forever を一緒に実行している場合と同じです。

forever start -w my-app.js

vs :のマイナス面にはforever -w--delayオプションがないため、変更されたファイルごとにサーバーが 1 回再起動されます。nodemonforever

于 2013-10-19T22:52:29.200 に答える
5

Toxa と Jubair が提案する組み合わせが好きです。

forever start -c nodemon app.coffee --exitcrash
于 2015-01-14T19:38:06.753 に答える
2

引数を渡す必要がある場合:

forever start -c "nodemon --harmony" app.js --exitcrash
于 2015-04-28T14:39:39.950 に答える