Ошибка обслуживания Firebase: порт 5000 не открыт. Не удалось запустить эмулятор функций

Я пытаюсь обслуживать функции 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 и получил ошибки типа.