Превращаю мой комментарий в ответ, поскольку он помог вам найти вашу проблему.
Внезапное завершение такого воркера, вероятно, потому что в воркере есть какое-то неперехваченное исключение, но вы не улавливаете это для регистрации того, что это такое. Очень полезно всегда регистрировать эти исключения. В вашей основной программе они часто будут регистрироваться за вас, но не всегда в рабочем. Есть два способа убедиться, что эта ошибка регистрируется, чтобы вы могли точно увидеть, что это такое. Один способ общего назначения, который вы, вероятно, должны использовать для всех ваших рабочих процессов, и один конкретный способ c для вашей конкретной функции, в которой возникла проблема.
Вот способ общего назначения. Когда вы создаете свой рабочий поток, всегда добавляйте это:
worker.on('error', err => {
console.log(err);
// do something else here like exit your program
});
Это даст вам консольный вывод для любой необработанной и фатальной ошибки в рабочем потоке.
Теперь в вашем укажите ситуацию c, вы знаете, что проблема возникает тогда, когда вы вызываете chooseQuestion();
, вы также можете просто поставить try/catch
вокруг этого, чтобы вы могли поймать и зарегистрировать ошибку:
parentPort.on('message', (msg) =>{
try {
HEADER = msg.HEAD;
console.log(msg);
//console.log(QuestionSet);
if (HEADER === HEADERSWORKER[0])
{
}
else if (HEADER === HEADERSWORKER[1])
{
}
else if (HEADER === HEADERSWORKER[2])
{
}
else if (HEADER === HEADERSWORKER[3])
{
QuestionSet = msg.DATA.QUESTIONS;
SessionID = msg.DATA.SESSIONID;
console.log(QuestionSet);
chooseQuestion();
//Start Game
}
} catch(e) {
console.log(e);
}
});