UNPKG

548 BJavaScriptView Raw
1'use strict'
2
3const { createServer } = require('net')
4
5function getPort (port = 3000, host = '127.0.0.1') {
6 const server = createServer()
7 return new Promise((resolve, reject) => {
8 server.on('error', (err) => {
9 if (err.code === 'EADDRINUSE' || err.code === 'EACCES') {
10 server.listen(0, host)
11 } else {
12 reject(err)
13 }
14 })
15 server.on('listening', () => {
16 const { port } = server.address()
17 server.close(() => resolve(port))
18 })
19 server.listen(port, host)
20 })
21}
22
23module.exports = getPort