Defensive coding for cluster=null if require('cluster') fails in try-catch

This commit is contained in:
Lam Wei Li 2022-03-04 21:58:02 +08:00
parent 3dfa03e36b
commit 90385ac907
No known key found for this signature in database
GPG Key ID: 90F6ABECF080D7BF

View File

@ -5,7 +5,7 @@ const configuration = require("./configuration");
let disabled = false;
let cluster = null;
try {
cluster = require("cluster"); //eslint-disable-line
cluster = require("cluster"); // eslint-disable-line
} catch (e) {
debug("cluster module not present");
disabled = true;
@ -17,7 +17,7 @@ let pm2 = false;
let pm2InstanceVar = "NODE_APP_INSTANCE";
const isPM2Master = () => pm2 && process.env[pm2InstanceVar] === "0";
const isMaster = () => disabled || cluster.isMaster || isPM2Master();
const isMaster = () => disabled || (cluster && cluster.isMaster) || isPM2Master();
const sendToListeners = logEvent => {
listeners.forEach(l => l(logEvent));
@ -72,7 +72,7 @@ if (!disabled) {
// we only want one of the app instances to write logs
debug("listening for PM2 broadcast messages");
process.on("message", receiver);
} else if (cluster.isMaster) {
} else if (cluster && cluster.isMaster) {
debug("listening for cluster messages");
cluster.on("message", receiver);
} else {