// Скрипт для поиска свободного порта для Next.js const net = require('net'); /** * Проверяет, свободен ли порт */ function isPortAvailable(port) { return new Promise((resolve) => { const server = net.createServer(); server.listen(port, () => { server.once('close', () => { resolve(true); }); server.close(); }); server.on('error', () => { resolve(false); }); }); } /** * Находит свободный порт начиная с заданного */ async function findFreePort(startPort, maxAttempts = 10) { for (let i = 0; i < maxAttempts; i++) { const port = startPort + i; const available = await isPortAvailable(port); if (available) { return port; } } throw new Error( `Не удалось найти свободный порт в диапазоне ${startPort}-${startPort + maxAttempts - 1}` ); } // Если запущен как скрипт if (require.main === module) { const startPort = parseInt(process.argv[2]) || 3000; findFreePort(startPort) .then((port) => { console.log(port); process.exit(0); }) .catch((error) => { console.error(error.message); process.exit(1); }); } module.exports = { isPortAvailable, findFreePort };