私たちは永遠に使うことをあきらめてしまいました.Nodemonで正しく動作し、同時にリモートディレクトリを見ることができませんでした。クラッシュしたときにサーバーを再起動するよりも、コマンドのコード変更をプッシュできることが重要であると判断しました。コードをプッシュすると、サーバーはどんな場合でも再起動します。
私は(私は自分の用途に変更されたコードへのリンクについては、以下の引用を参照)が含まれserverMon.jsと呼ばれるサーバー監視ファイルを作成:
const fs = require('fs');
const child_process = require('child_process');
//production path
var widgetPath = '\\\\server\\share\\sbSerialWidget\\';
var widgetFiles = ['sbNodeLog.js', 'server.js'];
var passedInFileName, infile, outfile;
for(var i = 0; i < widgetFiles.length; i++){
fs.createReadStream(widgetPath + widgetFiles[i]).pipe(fs.createWriteStream(widgetFiles[i]));
}
//spawn server.js passing it's stdio, stderr, stdout back through this node instance
server = child_process.spawn('node', ['server.js'], {stdio: 'inherit'}, function (error, stdout, stderr) {
if (error) {
console.log(error.stack);
console.log('Error code: ' + error.code);
console.log('Server.js error received: ' + error.signal);
}
console.log('Server.js STDOUT: ' + stdout);
console.log('Server.js STDERR: ' + stderr);
});
server.on('exit', function (code) {
server.kill('SIGTERM');
console.log('Child process exited with exit code '+code);
});
これはに含まれているnodemonスクリプトによって注目されています。 VBSファイル:順番に%ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
に配置されたCMDスクリプトによって実行される
CreateObject("Wscript.Shell").Run "nodemon serverMon.js --exitcrash --watch \\server\share\sbSerialWidget", 0, True
ので、ブート時に.vbsスクリプトを起動し、そう私たちの小さなシリアルウィジェットは、常にバックグラウンドで実行されている:
REM @echo off
REM cls
GOTO START
:START
IF EXIST "%ProgramFiles%\sbserialwidget\server.js" GOTO WIN32
IF EXIST "%ProgramFiles(x86)%\sbSerialWidget\server.js" GOTO WIN64
ECHO End start
GOTO END
:WIN32
cls
echo Inside 32 bit
PUSHD "%ProgramFiles%"\sbserialwidget
GOTO RUNVBS
GOTO END
:WIN64
echo Inside 64 bit
PUSHD "%ProgramFiles(x86)%"\sbSerialWidget
GOTO RUNVBS
GOTO END
:RUNVBS
echo Inside RUNVBS
start runNodemon.vbs
GOTO END
:END
popd
EXIT
リモートファイルの変更、および第3のサーバを監視しながら、私たちは、タスクマネージャで実行中のnode.exeの3つのインスタンス、秒を監視している1ランニングnodemon、serverMon.jsで終わります。 jsはserverMon.jsの子プロセスとして起動されます。
引用:
Copying node files with streams and pipes
Spawning a node child server