Windows 上の spawn pm2 プロセスは、.bat または .exe のみを起動できます。実際に機能させるには {shell: true} を有効にする必要があります。
Windows で spawn をデバッグしているときに、「spawn pm2 ENOENT」というばかげたエラーが明らかになりました。神々の StackOverflow について掘り下げて実際の解決策をまったく見つけられなかった後、私は一連の GitHub の問題を掘り下げ、最終的に Windows スポーンの適切な解決策を見つけました。
真の解決策が見つかりましたhttps://github.com/nodejs/node-v0.x-archive/issues/2318
@DrPizza ソリューション
@OrangeDogとにかく、移植可能なバッチファイルを実際に書くことはできません。
@DrPizza は本日、スポーンに { shell: true } オプションを追加できることを提案しました。私はそのアイデアが好きです。すべての出力をバッファリングすることなく、exec と同じ目的で spawn を使用できます。また、現在、exec と execFile の間に奇妙な違いがあります。これらを同じ関数にすることもできますが、シェル オプションのデフォルトは異なります。@ry、@bnoordhuis、どう思いますか?
私にとって究極の解決策は次のとおりです
let env = env === 'プロダクション' ? '製品': '砂'; // 環境変数のコンテキスト
let deploy = spawn('pm2', ['deploy', env, 'update', '&&', 'pm2', 'deploy', env, 'exec', '"sudo pm2 reload "'], {shell:真実});