这是我遇到的问题。
我的节点项目中有三个文件,分别为app.js
,app-8080.js
,app-8090.js
。
除了端口外,这三个文件几乎相同。
在app.js
server.listen(config.port0, () => {
console.log(utilL.format('app is listening at http://%s:%s', config.host, config.port0));
});
在app-8080.js
// the above is the same as app.js
server.listen(config.port1, () => {
console.log(utilL.format('app is listening at http://%s:%s', config.host, config.port1));
});
在app-8090.js
// the above is the same as app.js
server.listen(config.port2, () => {
console.log(utilL.format('app is listening at http://%s:%s', config.host, config.port2));
});
更新app.js
时,我必须做三次相同的工作。
现在我要进行如下更改。
在app.js
let port = (/^\d+$/.test(process.argv[2])) ? process.argv[2] : config.port0;
server.listen(port, () => {
console.log(utilL.format('app is listening at http://%s:%s', config.host, port));
});
在app-8080.js
const childProcess = require('child_process');
const config = require('./config/config');
let port = config.port1;
childProcess.fork('./app.js', [port]);
可以吗?我使用PM2启动app-8080.js
命令如下:
$ pm2 start app-8080.js
当app.js
中发生错误时,pm2是否将重新启动该过程?
还有其他问题吗?还是更好的解决方案是什么?
很高兴收到您的答复!