hm-react-cli
Version:
Create a Huimei React project by module
32 lines (27 loc) • 937 B
JavaScript
const net = require('net');
const tryUsePort = async function (port, portAvailableCallback) {
function portUsed(port) {
return new Promise((resolve, reject) => {
let server = net.createServer().listen(port);
server.on('listening', function () {
server.close();
resolve(port);
});
server.on('error', function (err) {
if (err.code == 'EADDRINUSE') {
resolve(err);
}
});
});
}
let res = await portUsed(port);
if (res instanceof Error) {
port++;
return tryUsePort(port, portAvailableCallback);
} else {
portAvailableCallback && portAvailableCallback(port);
return Promise.resolve(port);
}
};
// 输入一个预设的端口号,不可用在其基础 +1,直到输出一个可用的端口号
module.exports = tryUsePort;