Предположим, что приведенный ниже код находится в файле с именем x.js .Предположим, что у вас есть скрипт npm start в файле package.json, который выполняет команду node x.js .
process.on("SIGINT", (signal) => {
console.log(signal + " signal received.");
process.exitCode = 0;
});
setTimeout(function() {
console.log("Hello");
}, 5000);
Если мы выполняем кодс помощью команды node x.js
код напечатает только 1 строку «Сигнал SIGINT получен».Однако, если мы запускаем код с помощью команды npm run start
, код напечатает 2 строки «SIGINT signal receive».В дополнение к этому, если мы используем пакет npm nodemon
для контроля нашего кода и выполняем код с помощью команды nodemon x.js
, код также напечатает 2 строки «SIGINT signal receive».
Если бы мы использовали process.exit(0);
вместо process.exitCode = 0;
, мы бы заметили, что все вышеприведенные команды будут печатать только 1 строку «SIGINT signal receive» из-за принудительного выхода из процесса.
Это приводитМы обратимся к такой интерпретации, если мы не вызываем команду node
напрямую и используем уровень, такой как npm
и nodemon
, для запуска команды node
, в таких случаях уровень дважды передает сигнал SIGINT процессу узла.
Окружающая среда: macOS Mojave v10.14.6npm v6.10.0узел v12.7.0nodemon v1.18.11