【问题标题】:Node.js process.kill is causing an unsuccessful process exit (1)Node.js process.kill 导致进程退出不成功 (1)
【发布时间】:2021-12-11 21:33:30
【问题描述】:

我是 node.js 的新手,我按照 node.js documentation about process signals 编写了以下代码

const express = require("express");

const app = express();

app.get("/", (req, res) => {
  res.send("Hi!");
});

const server = app.listen(3000, () => console.log("Server ready"));

process.on("SIGTERM", () => {
  console.log("Handler started");
  server.close(() => {
    console.log("Process terminated");
  });
});

for (let i = 0; i < 10; i++) {
  if (i === 5) {
    process.kill(process.pid, "SIGTERM");
  } else {
    console.log(i);
  }
}

但在终端中运行此应用程序后,输出 (node app.js) 如下:

0
1
2
3
4

处理程序没有运行

在运行process.kill 时,调试进程退出,代码 = 1。

如何调试才能知道确切的原因?我无法使用 try catch 块打印错误

【问题讨论】:

    标签: node.js process signals posix sigterm


    【解决方案1】:

    为什么“处理程序启动”和“进程终止”没有打印到 控制台?

    当我运行以下脚本时,我会在控制台上打印一些东西。我认为您应该运行以下脚本并对其进行测试:

    const express = require('express')
    
    const app = express()
    
    app.get('/', (req, res) => {
      res.send('Hi!')
    })
    
    const server = app.listen(3000, () => console.log('Server ready'))
    
    process.on('SIGTERM', () => {
      server.close(() => {
        console.log('Process terminated')
      })
    });
    
    for(let i = 0; i < 10; i ++){
      if(i === 5) {
          process.kill(process.pid, 'SIGTERM')
      }else{
          console.log(i)
      }
    }
    

    运行上述脚本后的结果:

    AV:newTest11 apoorvachikara$ node test.js 
    0
    1
    2
    3
    4
    6
    7
    8
    9
    Server ready
    Process terminated
    AV:newTest11 apoorvachikara$ 
    

    您正在运行的脚本似乎存在一些问题。

    【讨论】:

    • 是的,但是为什么需要监听端口才能使其工作?它应该在问题代码中输入处理程序
    • 进程仅在您启动服务器时可用。了解流程后,您可以发送不同的信号。
    • 原来错误在 process.kill 方法中。更新了问题。即使在收听服务器时,错误仍在发生
    • 您使用的是什么节点版本?因为在我的机器上运行相同的代码,会产生与答案中提到的相同的 o/p。
    • 版本 16.13.0。 (在 Windows 10 上运行)
    【解决方案2】:

    原来windows操作系统不是POSIX,所以它不使用unix信号。

    最好的办法是要么使用windows linux子系统(WSL2)在使用windows的unix环境上开发,要么在unix os上开发node js应用程序

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多