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 serve
或 firebase 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:未进行远程连接,因为远程访问服务器的名称问题没有解决
必须打开哪些端口才能与Firebase数据库(而不是FCM消息传递)进行通信?