Firebase 服务错误:端口 5000 未打开。无法启动功能模拟器

Posted

技术标签:

【中文标题】Firebase 服务错误:端口 5000 未打开。无法启动功能模拟器【英文标题】:Firebase serve error: Port 5000 is not open. Could not start functions emulator 【发布时间】:2019-12-23 12:41:58 【问题描述】:

我正在尝试在本地提供 firebase 功能,但是当我运行 firebase servefirebase emulators:start 时,错误消息是:“端口 5000 未打开,无法启动功能模拟器。”

我使用的是 Windows 10,因此我尝试更改端口号,检查端口是否被防火墙阻止,并在防火墙中为端口 5000-5010 创建一个新规则,但这些方法都不适用于我.

【问题讨论】:

在 MacOS 上遇到同样的问题。现在恢复到 firebase-tools 版本 6.12.0,这似乎有效(尽管不是真正解决问题的方法)。 npm i -g firebase-tools@6.12.0 使用firebase-tools@6.12.0在node模块中产生grpc相关错误,最新的firebase-tools没有这个错误。 => 恢复到 v6.12.0 对我不起作用:( @Thr3e 这也发生在我身上。所以,我在functions文件夹中安装了grpc模块,它又可以工作了 在我的例子中,我运行了AirServer,它使用了5001 端口。所以我一看到publicmat的回答就把它关了。 【参考方案1】:

这里建议https://github.com/firebase/firebase-tools/issues/2856#issuecomment-902411134

正在升级 Node.js。

我刚刚将 Node 升级到 14.17.5。这解决了问题。我只需按 Ctrl+C 即可停止所有模拟器。

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review【参考方案2】:

MacOS Monterey 中,新的“AirPlay 接收器”可能会占用端口 5000。这可以在设置 -> 共享中禁用:

Screenshot of settings panel for disabling AirPlay Receiver

禁用 AirPlay 接收器(如果您不需要它)会释放端口 5000。

【讨论】:

非常感谢!这成功了:P 很好的解决方案.. 谢谢 哇...这太晦涩难懂了。谢谢!【参考方案3】:

首先,关闭所有选项卡重新启动 VS 代码,然后进入 firebase.json 文件 更改ui端口号然后重新启动,它会工作!

“ui”: “启用”:是的, "port": "输入任意数字"

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。【参考方案4】:

不久前我也遇到过同样的问题。

我发现我的计算机上的另一个终端上运行了 firebase。

所以在您尝试firebase serve 之前,请检查它是否在另一个终端上运行。

我希望它能像我一样解决你的问题。

【讨论】:

【参考方案5】:

如果firebase serve --host 127.0.0.1为你解决;也许你还没有设置你的hosts 文件。 Linux - Network configuration

【讨论】:

【参考方案6】:

运行这个命令对我有用:firebase emulators:start --only firestore

同时关闭此窗口:

【讨论】:

【参考方案7】:

对于 Windows 用户:

netstat -ano|findstr "PID :5000"

然后在行尾找到进程 ID (PID)。

taskkill /pid FOUNDPID /F

命令 taskkill 在 VS Code 上下文的终端中不起作用。它需要(提升的)CMD 提示或等效的 Powershell 环境才能成功终止对 127.0.0.1:5000 的侦听。

【讨论】:

【参考方案8】:

lsof -t -i tcp:5000 | xargs kill

Mac 用户的单行替代方案,将进程 ID 直接通过管道传输到 kill。 h/t @manav

最初的问题是针对 Windows 的,但可能对其他人有用,因为问题现在在搜索结果中排名很高。

【讨论】:

【参考方案9】:

这里的问题是您的端口号 5000 正在运行某个进程。 因此,首先,您需要终止该进程。

在ubuntu中查找进程id

sudo lsof -i :5000

假设你得到 14541 的 PID

杀死进程

sudo kill -9 14541

【讨论】:

【参考方案10】:

对于 Mac/Linux,使用终端/Shell 查找进程 ID (PID),然后终止进程。

sudo lsof -i :5000
sudo kill -9 PID

【讨论】:

lsof -t -i tcp:5000 | xargs kill - 一种替代方法,将 lsof 的输出通过管道传递到 kill (h/t @manav) 如果您使用的是 macOS Monterey,Airplay 服务器现在使用端口 5000,因此您需要更改进程的端口或在系统偏好设置 > 共享中终止 Airplay 接收器【参考方案11】:

或者使用不同的端口,这是一个简单的解决方案。 例如, firebase serve -p 5001

【讨论】:

【参考方案12】:

只需运行命令 firebase serve --only functions --host 0.0.0.0

【讨论】:

【参考方案13】:

快速修复npm i -g firebase-tools@7.8.0

【讨论】:

【参考方案14】:

解决方案:Firebase 服务错误:端口 5000 未打开。无法启动函数模拟器

如果您在运行 Firebase 时收到以下错误消息之一,您可以通过切换到其他版本的 Firebase 工具轻松解决问题。

5000 端口未打开,无法启动功能模拟器。

如果您使用的是第 6 版 Firebase 工具,则可以切换到最新版本 (6.12.0),或者尝试使用 v7.2.2。要更改为 Firebase 工具版本,请运行以下节点包管理器命令。

npm install -g firebase-tools@6.12.0

【讨论】:

【参考方案15】:

这对我有用。

只需重新启动系统。

【讨论】:

其实重启代码编辑器也能正常工作,谢谢!【参考方案16】:

最近在官方 github repo 中报告了一个类似的问题:https://github.com/firebase/firebase-tools/issues/1606。

它是由依赖项(节点端口查找器)中的错误引起的,如您在此处看到的。 https://github.com/http-party/node-portfinder/pull/86

编辑它的快速修复可能是使用旧版本的节点端口查找器(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 ) 来实现。

编辑: 按照 Mladen Skrbic 的建议,要找到 firebase-tools 文件夹,您应该运行 npm root -g 并在其中找到 firebase-tools 文件夹。

这应该可以解决问题!

【讨论】:

谢谢它解决了我的问题,我只想说 npm root -g 会告诉你去哪里看 OSX 上的一行修复:sed -i '' 's/stopPort: port/stopPort: port+1/' node_modules/firebase-tools/lib/emulator/controller.js 哇,我们的编码就像 1999 年一样!【参考方案17】:

在哪里? node_modules/firebase-tools/lib/emulator/controller.js 我在 node_modules 中找不到“firebase-tools”文件夹。 我只能找到 firebase-funstions 和 firebase-admin。

【讨论】:

这是你全局安装的 firebase-tools 的 node_modules,可以在这里找到 C:\Users[USERNAME]\AppData\Roaming\npm\node_modules【参考方案18】:

而不是最新的 firebase-functions(目前是 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)

【讨论】:

在 firebase-tools 版本 7.2.2 中遇到问题,但按照建议(感谢)在版本 7.0.2 以及最新版本 7.2.4 中工作。 在任何 firebase-tools 版本中,仅适用于 firebase-functions 3.0.2。

以上是关于Firebase 服务错误:端口 5000 未打开。无法启动功能模拟器的主要内容,如果未能解决你的问题,请参考以下文章

VPN连接错误 端口已打开 错误868:未进行远程连接,因为远程访问服务器的名称问题没有解决

为互联网打开端口 5000 不适用于谷歌云计算引擎实例

必须打开哪些端口才能与Firebase数据库(而不是FCM消息传递)进行通信?

带有 iOS 应用的 Firebase 测试实验室 - 应用已安装但未打开

未安装 Ionic Firebase 插件

将 Web 服务器从端口 5000 重定向到 localhost (Fedora) 上的端口 80