node检测端口可用性的实践示例
前言
我们编写自己的框架或者 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端口启动
尾言
到此这篇关于node检测端口可用性的实践示例的文章就介绍到这了,更多相关node检测端口可用性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
node如何将package.json中的包降为低版本或者升级为高版本
比如现在你用某个包的当前版本,但是你安装的版本高了,那么你应该这么做,首先删除node项目中的node_modules目录,防止安装时的包不一致,下面给大家介绍node将package.json中的包降为低版本或者升级为高版本的方法,感兴趣的朋友一起看看吧2023-11-11手把手教你VSCode配置JavaScript基于Node.js的调试环境
最近在补数据结构,在用VScode调试js代码文件结果怎么都不行,这篇文章主要给大家介绍了关于VSCode配置JavaScript基于Node.js的调试环境的相关资料,需要的朋友可以参考下2022-12-12node.js使用Moment.js js 时间计算方法示例小结
这篇文章主要介绍了node.js使用Moment.js js 时间计算方法,结合实例形式分析了Moment.js js模块时间计算的常用操作技巧与相关注意事项,需要的朋友可以参考下2023-05-05
最新评论