@funboxteam/free-port-finder (英语)
包会检查通过端口的可用性,或者试图找到从通过端口开始的第一个可用的端口.
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
理由
当您在本地主机启动 TCP( 或 HTTP) 服务器时, 您想要确定理想的端口没有被占用 或者你根本不在乎 想要买第一个.
这个小工具承担着这项任务.
安装
npm install --save-dev @funboxteam/free-port-finder
使用量
findFreePort(port: number, host?: string): Promise<number> 搜索从通过端口开始的现有端口 :
const { findFreePort } = require('@funboxteam/free-port-finder');
const port = 3000;
findFreePort(port)
.then(freePort => {
config.devServer.port = freePort;
});
isPortFree(port: number, host?: string): Promise<bool> 检查通过端口的可用性 :
const { isPortFree } = require('@funboxteam/free-port-finder');
const port = 3000;
isPortFree(port)
.then(isFree => {
if (isFree) {
// start
} else {
// cancel
}
});
可以通过主机值作为第二个参数. 默认主机值为 '0.0.0.0'。 。 。 .
检查指定主机上的端口是否可用 :
const { isPortFree } = require('@funboxteam/free-port-finder');
const port = 3000;
const host = '127.0.0.1';
isPortFree(port, host)
.then(isFree => {
if (isFree) {
// start
} else {
// cancel
}
});
如何运作
为了了解端口是否自由,这个软件包试图
在指定的端口运行 TCP 服务器。 如果服务器启动, 包会杀死
它和信号 端口是免费的。 如果一个 EADDRINUSE 出错,它发出信号
港口正忙着 如果发生其他出错,则包会丢出.
这种解决办法既有利又不利.
计数 :
在一些操作系统不正确 SO_REUSEADDR 处理是可能的,自由端口可以
显示为繁忙(反之亦然).
职业:
可以走另一条路,尝试连接插座
指定地址,而不是运行服务器。 但在这种情况下,
连接到套接字可能会启动某种进程
这有可能是不可逆转的。 因此,
目前的解决办法是安全的.