📜  如何在 nodejs 中释放服务器端口(kill) (1)

📅  最后修改于: 2023-12-03 15:08:43.758000             🧑  作者: Mango

如何在 Node.js 中释放服务器端口(kill)

在开发 Node.js 服务器应用时,经常需要在调试过程中重启服务器或在启动失败时释放服务器端口。本文将介绍如何在 Node.js 中释放服务器端口。

简述

在 Node.js 中,使用 process 对象可以获取当前进程的信息以及与进程相关的操作。其中,process.pid 属性获取当前进程的进程 ID(PID),该 ID 十分重要,因为要释放服务器端口就要通过进程 ID 来杀死进程。进程被杀死后,服务器端口就被释放了。

释放服务器端口的步骤
  1. 获取当前进程的进程 ID(PID),方法如下:

    const pid = process.pid;
    console.log(`当前进程的进程 ID:${pid}`);
    

2.杀死进程,方法如下(在 Windows 和 Unix 系统下,命令略有不同):

// 在 Windows 系统下
const exec = require('child_process').exec;
exec(`taskkill /pid ${pid} /T /F`, (error, stdout, stderr) => {
  if (error) {
    console.error(`杀死进程发生错误:${error}`);
  } else {
    console.log(`进程 ${pid} 已杀死:stdout = ${stdout}, stderr = ${stderr}`);
  }
});

// 在 Unix 系统下
process.kill(pid, 'SIGTERM');
  1. 检查端口是否已被占用,方法如下:

    const net = require('net');
    
    function checkPortInUse(port) {
      return new Promise((resolve, reject) => {
        const server = net.createServer().listen(port);
    
        server.on('listening', () => {
          server.close();
          resolve(false);
        });
    
        server.on('error', () => {
          resolve(true);
        });
      });
    }
    
    // 使用方法
    checkPortInUse(8080).then(isInUse => {
      if (isInUse) {
        console.log(`端口 8080 已被占用`);
      } else {
        console.log(`端口 8080 可用`);
      }
    });
    
笔者总结

在 Node.js 中,我们可以通过 process 对象和 net 模块提供的方法来释放服务器端口。以上是本文的全部内容,希望对你有所帮助。