nodejs 如何检测端口可用性

简介: nodejs 如何检测端口可用性

前言


我们编写自己的框架或者 nodejs 服务器代码时,可能会用一些固定使用我们常用的端口。


问题来了,如果是编写框架,你的框架中固定了框架使用8000端口,用户使用你的框架时并不知道,此时他本机的8000端口被占用了,那用户岂不是无法使用你的框架了。


我们需要解决这个问题。


创建项目

$ mkdir project && cd project
$ npm init -y

使用express编写一个服务器


安装 express

$ npm i express

编写一个占用8000端口的服务。

// project/index.js
const express = require('express')
const app = new express()
app.listen(8000, () => {
    console.log(`服务器在8000端口启动`)
})

启动


$ node index.js
服务器在8000端口启动

此时我们不关闭该服务,再打开一个命令行,再尝试启动。

因为8000端口已经运行了一个服务,被占用了,所以报错了:

$ node index.js
Error: listen EADDRINUSE: address already in use :::8000

解决


安装 portfinder

$ npm i portfinder 

使用 portfinder 来检测端口是否可用,如果被占用会重新寻找一个可用的端口给你。

const express = require('express')
const portfinder = require('portfinder')
const app = new express()
const default_port = 8000;
(async () => {
    const port = await portfinder.getPortPromise({
        port: default_port
    })
    app.listen(port, () => {
        console.log(`服务器在${port}端口启动`)
    })
})()

我们再重新启动两个,成功解决问题。

$ node index.js
服务器在8000端口启动
$ node index.js
服务器在8001端口启动

尾言


如果觉得文章对你有帮助的话,欢迎点赞收藏哦,有什么错误或者意见建议也可以留言,感谢~

相关文章
|
前端开发
bat 批处理文件 结束node进程 杀死指定端口
bat 批处理文件 结束node进程 杀死指定端口
|
3月前
|
弹性计算 监控 JavaScript
云服务器 ECS产品使用问题之Node.js项目部署成功后无法通过公网IP+端口号访问,是什么导致的
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
3月前
|
前端开发 Java 应用服务中间件
linux本地检测如何tomcat是否启动成功tomcat端口检测
linux本地检测如何tomcat是否启动成功tomcat端口检测
32 0
|
4月前
|
网络协议 Java
Java中如何使用Socket类检测端口是否存在
Java中如何使用Socket类检测端口是否存在
80 4
|
4月前
|
存储 JSON JavaScript
Node.js 上开发一个 HTTP 服务器,监听某个端口,接收 HTTP POST 请求并处理传入的数据
Node.js 上开发一个 HTTP 服务器,监听某个端口,接收 HTTP POST 请求并处理传入的数据
|
4月前
|
Shell
Shell脚本检测服务器或者ip哪些端口是开放的都是开放了哪些端口
Shell脚本检测服务器或者ip哪些端口是开放的都是开放了哪些端口
34 0
|
网络协议
appium--自动检测端口和释放端口
appium--自动检测端口和释放端口
|
4月前
|
运维 安全 数据库
cmd中使用telnet检测远程的ip及端口是否处于监听状态
cmd中使用telnet检测远程的ip及端口是否处于监听状态
86 1
|
监控 网络协议 Linux
Linux利用nc命令脚本批量检测服务器指定端口是否开放
nc命令脚本批量检测服务器指定端口是否开放
1072 0
Linux利用nc命令脚本批量检测服务器指定端口是否开放
|
网络协议 Linux Windows
检测端口连通性
使用psping, paping, tcping等工具检测TCP, UDP等端口的联通情况
293 1