Log in to leave a comment
No posts yet
Каждое утро, когда мы запускаем сервер разработки, нас встречает незваный гость. Это сообщение Error: listen EADDRINUSE: address already in use :::3000. По мере роста количества проектов запоминание того, какой сервис какой порт использует, становится настоящей мукой. Процесс поиска «зомби-процессов» и отправка им kill -9 — главный виновник нарушения потока разработки.
Решением этого «портового ада», предложенным Vercel Labs, стал Portless. Теперь открыта эра доступа к локальной среде по имени сервиса вместо бессмысленных комбинаций цифр.
Portless — это не просто обертка, соединяющая домен с портом. Это интеллектуальная прокси-система, работающая между сетевым уровнем операционной системы и приложением.
При выполнении команды portless my-app npm run dev система запускается мгновенно. Сначала Portless CLI сканирует доступные порты системы (по умолчанию в диапазоне 4000-4999), чтобы найти свободный. Затем он внедряет найденный номер порта в переменную окружения PORT и выполняет подкоманду. Наконец, он записывает имя сервиса и назначенный порт в центральное хранилище (~/.portless) для управления.
Portless использует спецификацию RFC 6761. Согласно этому стандарту, домены, заканчивающиеся на .localhost, всегда интерпретируются как loopback-адрес (127.0.0.1) без необходимости редактирования файлов хостов. Когда браузер отправляет запрос, прокси-сервер Portless, ожидающий на порту 1355, анализирует заголовки и передает трафик в соответствующее приложение.
Последняя версия Vite строго ограничивает доступ внешних прокси для усиления безопасности. Если при использовании Portless вы столкнулись с ошибкой 403 Forbidden, необходимо изменить файл конфигурации. Чтобы безопасно разрешить все субдомены, добавьте настройку allowedHosts: ['.localhost']. Кроме того, в настройках hmr клиентский порт должен соответствовать порту Portless по умолчанию (1355), чтобы горячая замена модулей (HMR) не прерывалась.
Для тестирования Geolocation API или Service Workers необходим безопасный контекст (secure context). Portless с помощью одного флага создает локальный центр сертификации и регистрирует его в системном хранилище доверия. Это позволяет тестировать политики куки так же, как на реальном рабочем сервере, без предупреждений безопасности в браузере.
В среде разработки 2026 года Portless особенно ярко проявляет себя в сотрудничестве с AI-агентами. Когда такие агенты, как Cursor или Windsurf, запускают локальные серверы, динамическое изменение номеров портов часто ломает логику вызовов API, написанную агентом.
Внедрение Portless позволяет всегда предоставлять агенту неизменный адрес, такой как auth-service.localhost:1355. Это помогает ИИ использовать имя сервиса вместо мимолетной информации о номере порта при понимании структуры зависимостей проекта, что повышает точность генерации кода. Напишите руководство в корне проекта и направьте агента на самостоятельное управление прокси.
Процесс внедрения прост: установите пакет глобально, запустите прокси-сервер и добавьте имя сервиса перед существующим скриптом запуска.
Пользователи Windows или WSL2 могут столкнуться с проблемами доступа из-за сетевой изоляции. В этом случае необходимо активировать режим зеркалирования сети в файле конфигурации пользователя. Настройка networkingMode=mirrored позволяет разрушить сетевой барьер между хостом и средой Linux.
| Пункт сравнения | Vercel Portless | Caddy / Nginx |
|---|---|---|
| Сложность настройки | Zero Config | Высокая |
| Распределение портов | Полностью автоматическое | Требуется ручное указание |
| Основная цель | Продуктивность локальной разработки | Продакшн и фиксированная маршрутизация |
Vercel Portless — это не просто инструмент для скрытия номеров портов. Это эволюция, помогающая разработчикам освободиться от низкоуровневых деталей инфраструктуры и сосредоточиться исключительно на создании ценности продукта. Для современного веб-разработчика управление портами — это технический долг, который пора автоматизировать. Начните использовать более интеллектуальную среду разработки, общающуюся именами, уже сейчас.