node檢測端口可用性的實(shí)踐示例
前言
我們編寫自己的框架或者 nodejs 服務(wù)器代碼時(shí),可能會用一些固定使用我們常用的端口。
問題來了,如果是編寫框架,你的框架中固定了框架使用8000端口,用戶使用你的框架時(shí)并不知道,此時(shí)他本機(jī)的8000端口被占用了,那用戶豈不是無法使用你的框架了。
我們需要解決這個(gè)問題。
創(chuàng)建項(xiàng)目
$ mkdir project && cd project $ npm init -y
使用express編寫一個(gè)服務(wù)器
安裝 express
$ npm i express
編寫一個(gè)占用8000端口的服務(wù)。
// project/index.js const express = require('express') const app = new express() app.listen(8000, () => { ? ? console.log(`服務(wù)器在8000端口啟動`) })
啟動
$ node index.js 服務(wù)器在8000端口啟動
此時(shí)我們不關(guān)閉該服務(wù),再打開一個(gè)命令行,再嘗試啟動。
因?yàn)?000端口已經(jīng)運(yùn)行了一個(gè)服務(wù),被占用了,所以報(bào)錯(cuò)了:
$ node index.js
Error: listen EADDRINUSE: address already in use :::8000
解決
安裝 portfinder
$ npm i portfinder
使用 portfinder 來檢測端口是否可用,如果被占用會重新尋找一個(gè)可用的端口給你。
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(`服務(wù)器在${port}端口啟動`) ? ? }) })()
我們再重新啟動兩個(gè),成功解決問題。
$ node index.js
服務(wù)器在8000端口啟動
$ node index.js
服務(wù)器在8001端口啟動
尾言
到此這篇關(guān)于node檢測端口可用性的實(shí)踐示例的文章就介紹到這了,更多相關(guān)node檢測端口可用性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nest.js使用multer實(shí)現(xiàn)文件上傳功能
這篇文章主要為大家詳細(xì)介紹了Nest.js鵝湖使用multer實(shí)現(xiàn)文件上傳功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03node如何將package.json中的包降為低版本或者升級為高版本
比如現(xiàn)在你用某個(gè)包的當(dāng)前版本,但是你安裝的版本高了,那么你應(yīng)該這么做,首先刪除node項(xiàng)目中的node_modules目錄,防止安裝時(shí)的包不一致,下面給大家介紹node將package.json中的包降為低版本或者升級為高版本的方法,感興趣的朋友一起看看吧2023-11-11Node.js16.15.1的一個(gè)報(bào)錯(cuò)以及解決方案分享
這篇文章主要給大家介紹了關(guān)于Node.js16.15.1的一個(gè)報(bào)錯(cuò)以及解決方案的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-12-12手把手教你VSCode配置JavaScript基于Node.js的調(diào)試環(huán)境
最近在補(bǔ)數(shù)據(jù)結(jié)構(gòu),在用VScode調(diào)試js代碼文件結(jié)果怎么都不行,這篇文章主要給大家介紹了關(guān)于VSCode配置JavaScript基于Node.js的調(diào)試環(huán)境的相關(guān)資料,需要的朋友可以參考下2022-12-12node.js使用Moment.js js 時(shí)間計(jì)算方法示例小結(jié)
這篇文章主要介紹了node.js使用Moment.js js 時(shí)間計(jì)算方法,結(jié)合實(shí)例形式分析了Moment.js js模塊時(shí)間計(jì)算的常用操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2023-05-05json對象及數(shù)組鍵值的深度大小寫轉(zhuǎn)換問題詳解
這篇文章主要給大家介紹了關(guān)于json對象及數(shù)組鍵值的深度大小寫轉(zhuǎn)換問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03使用nvm進(jìn)行多個(gè)nodejs版本的統(tǒng)一管理
隨著前端項(xiàng)目的越來越多,不同項(xiàng)目使用的nodejs版本可能不一樣,導(dǎo)致在切換不同項(xiàng)目時(shí)需要更換不同的nodejs版本,非常麻煩,本次推薦使用nvm進(jìn)行多個(gè)nodejs版本的統(tǒng)一管理,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下2023-12-12