现象:在node服务中,使用了request包,用以解决前端跨域请求酷狗音乐,在连接的过程中,会时不时出现node宕调情况,于是乎查找解决方案。
看到博客园https://www.cnblogs.com/lliule/p/7943365.html,给出的方案正合我意,很好的解决了我的问题,特此记录。
下面是测试demo。
1 2 3 4 5 6 7 8 9 10 11 | // start.js test(); function test() { console.log( "服务进行中。。。" ); setTimeout( function () { console( '模拟各种异步业务逻辑。。。' ); //业务正常执行完成,系统退出。 process.exit(0); },1000); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //auto.js //自动重启 let process = require( 'child_process' ); let fs = require( 'fs-extra' ); let ChildProcess = process.fork( './start.js' ); ChildProcess.on( 'exit' , function (code) { console.log( 'process exits + ' +code); fs.appendFileSync( './log.txt' , '线程退出' ); if (code !== 0){ process.fork( './auto.js' ); } }); |
最后,配置一下windows的命令文件:
1 2 3 4 5 6 | //autoStart.bat @echo off node auto.js @pause |
点击autoStart.bat文件,或者直接打开cmd,运行 node auto.js后,系统正常退出,不会重启。
修改start.js 代码,
1 2 3 4 5 6 7 8 9 10 11 12 | // start.js test(); function test() { console.log( "服务进行中。。。" ); setTimeout( function () { console( '模拟各种异步业务逻辑。。。' ); let c= a.b; // 这里a undefined.所以会报错 //业务正常执行完成,系统退出。 process.exit(0); },1000); } |
此时。系统会一直重启重启。。。