Я пытаюсь обслуживать функции Firebase локально, но когда я запускаю firebase serve
или firebase emulators:start
, появляется сообщение об ошибке: «Порт 5000 не открыт, не удалось запустить эмулятор функций».
Я использую Windows 10, поэтому я попытался изменить номер порта, проверить, заблокирован ли порт брандмауэром, и я создаю новое правило в брандмауэре для портов 5000-5010, но ни один из этих подходов не помог мне.
Ответ 1
Недавно в официальном репозитории github сообщалось о похожей проблеме: https://github.com/firebase/firebase-tools/issues/1606.
Это вызвано ошибкой в зависимости (указатель порта узла), как вы можете видеть здесь. https://github.com/http-party/node-portfinder/pull/86
Быстрое исправление для его редактирования может заключаться в использовании старой версии узла portfinder (v 1.0.21). Кроме того, вы можете сделать это, отредактировав node_modules/firebase-tools/lib/emulator/controller.js
и изменив yield pf.getPortPromise({ port, stopPort: port })
на yield pf.getPortPromise({ port, stopPort: port + 1 })
.
ОБНОВЛЕНИЕ:
По предложению Младена Скрбича, чтобы найти папку firebase-tools
, вы должны запустить npm root -g
и найти там папку firebase-tools
.
Это должно решить проблему!
Ответ 2
Вместо последних firebase-функций (в настоящее время это 3.2.0), в моем случае было решено заставить его оставаться на 3.0.2.
"dependencies": {
"firebase-admin": "^8.2.0",
"firebase-functions": "3.0.2",
...
}
(Также я использую firebase-tools версии 7.0.2 atm, не проверял его с последней версией. Если это не работает, попробуйте вернуть firebase-tools в 7.0.2)
Ответ 3
где?
node_modules/firebase-инструменты/Lib/Эмулятор/controller.js
Я не могу найти папку «firebase-tools» в node_modules.
Я смог найти только firebase-funstions и firebase-admin.
Ответ 4
Та же ошибка происходит и со мной тоже
Error: Port 5001 is not open, could not start functions emulator.
Я попытался использовать версию 6.12.0
и получил ошибки типа.
3
ответа
Бегать lsof -t -i tcp:5000 | xargs kill
из вашего Терминала.
Распространенная причина этой ошибки возникает, когда эмулятор Firebase не завершен полностью (например, закрытие среды IDE, в которой запущен эмулятор во встроенном сеансе терминала). Это оставит процесс, работающий в фоновом режиме, и займет порт эмулятора по умолчанию.
Чтобы разрешить конфликт, найдите идентификатор процесса, запущенного на порту (здесь 5000), в командной строке терминала и затем уничтожьте его.
Вышеупомянутый однострочный файл находит идентификатор процесса и направляет его напрямую в kill
(ч / т @manav).
Для получения дополнительной информации ознакомьтесь с: Найти (и уничтожить) порт блокировки процесса 3000 на Mac
2020-08-11 21:27
Если вы столкнулись с этой проблемой в macOS Pro, то это решение для вас.
В MacOS порт 5000 может быть занят новым «приемником AirPlay». Это можно отключить в Настройки -> Общий доступ:
Я также добавляю скриншот панели настроек для отключения AirPlay Receiver.
Отключение приемника AirPlay (если он вам не нужен) освобождает порт 5000.
2022-08-30 08:07
Ошибка, кажется, не на вашем конце
Это вызвано ошибкой в зависимости (узел portfinder).
Быстрое исправление для его редактирования может заключаться в использовании старой версии узла portfinder (v 1.0.21). В качестве альтернативы вы можете сделать это, отредактировав node_modules/firebase-tools/lib/emulator/controller.js и изменив yield pf.getPortPromise({ port, stopPort: port }), чтобы получить pf.getPortPromise({ port, stopPort: port + 1) }).
Вы можете увидеть ответ на свой вопрос полностью здесь в этой ссылке SO.
2019-08-26 10:08
Run lsof -t -i tcp:5000 | xargs kill
from your Terminal.
A common cause for this error occurs when the Firebase emulator is not cleanly shut down (e.g., closing your IDE that’s running the emulator in an embedded Terminal session) This will leave the process running in the background and occupies the emulator’s default port.
To resolve the conflict, find the process ID running on the port (here 5000) from your Terminal command line and then kill it.
The above one-liner finds the process ID and pipes it directly to kill
(h/t @manav).
For additional info, check out: Find (and kill) process locking port 3000 on Mac
answered Aug 11, 2020 at 18:27
warfieldwarfield
6446 silver badges14 bronze badges
1
The bug seems to be on not your end
It is caused by a bug in a dependency (node portfinder).
A quick fix to edit it might be to use the old version of node portfinder (v 1.0.21). Alternatively, you can do it by editing node_modules/firebase-tools/lib/emulator/controller.js and changing yield pf.getPortPromise({ port, stopPort: port }) to yield pf.getPortPromise({ port, stopPort: port + 1 }).
You can see the answer to your question completely here in this SO link.
answered Aug 26, 2019 at 7:08
HexaCropHexaCrop
3,8932 gold badges23 silver badges51 bronze badges
If you are facing this issue in macOS Pro then this solution is for you.
In MacOS , Port 5000 may be claimed by a new «AirPlay Receiver».
This can be disabled in Settings -> Sharing:
I’m also adding the Screenshot of settings panel for disabling AirPlay Receiver.
Disabling the AirPlay Receiver (if you do not need it) frees up port 5000.
answered Aug 30, 2022 at 8:07