[英]Firebase serve error: Port 5000 is not open. Could not start functions emulator
我正在尝试在本地提供 firebase 功能,但是当我运行firebase serve
或firebase emulators:start
错误消息是:“端口 5000 未打开,无法启动功能模拟器。”
我使用的是 Windows 10,所以我尝试更改端口号,检查端口是否被防火墙阻止,然后我在防火墙中为端口 5000-5010 创建了一个新规则,但这些方法都不适合我。
对于 Mac/Linux,使用终端/外壳查找进程 ID (PID),然后终止进程。
sudo lsof -i :5000
sudo kill -9 PID
对于 Windows 用户:
netstat -ano|findstr "PID :5000"
然后在行尾找到进程 ID (PID)。
taskkill /pid FOUNDPID /F
命令taskkill
在 VS Code 上下文的终端内不起作用。 它需要一个(提升的)CMD-prompt 或等效的 Powershell 环境才能成功终止对 127.0.0.1:5000 的侦听。
这里的问题是您的端口号 5000 正在运行某个进程。 因此,首先,您需要终止该进程。
在ubuntu中查找进程ID
须藤 lsof -i :5000
假设 PID 你得到 14541
杀死进程
须藤杀-9 14541
端口5000
和7000
由 MacOS Monterey 上的 airplay 占用。
按照此处的建议关闭 Airplay 接收器或
使用不同的端口更新firebase.json
"emulators": {
"hosting": {
"port": 5004
}
}
或者使用不同的端口,这是一个简单的解决方案。 例如, firebase serve -p 5001
lsof -t -i tcp:5000 | xargs kill
Mac 用户的一种单行替代方法,它将进程 ID 直接通过管道传递给kill
。 h/t @manav
最初的问题是针对 Windows 的,但可能对其他人有用,因为问题现在在搜索结果中排名靠前。
最近在官方 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 })
。
编辑:正如 Mladen Skrbic 所建议的,为了找到 firebase firebase-tools
文件夹,您应该运行npm root -g
并在那里找到firebase-tools
文件夹。
这应该可以解决问题!
只需运行命令 firebase serve --only functions --host 0.0.0.0
而不是最新的 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)
这对我有用。
只需重新启动系统。
快速修复npm i -g firebase-tools@7.8.0
macOS Monterey 12.2 用户在这里。 我只是将端口更改为 5005,它就像一个魅力。
{
"hosting": {
"public": "functions/browser",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"function": "ssrapp"
}
]
},
"emulators": {
"hosting": {
"port": "5005"
}
}
}
试试这个方法:
firebase serve --only functions -p 5002
哪里? node_modules/firebase-tools/lib/emulator/controller.js 我在 node_modules 中找不到“firebase-tools”文件夹。 我只能找到 firebase-funstions 和 firebase-admin。
解决方案:Firebase 服务错误:端口 5000 未打开。 无法启动函数模拟器
如果您在运行 Firebase 时收到以下错误消息之一,您可以通过切换到其他版本的 Firebase 工具轻松解决该问题。
端口 5000 未打开,无法启动功能模拟器。
如果您使用的是 Firebase 工具的第 6 版,您可能会切换到最新版本 (6.12.0),或者您可以尝试 v7.2.2。 要更改为 Firebase 工具版本,请运行以下节点包管理器命令。
npm install -g firebase-tools@6.12.0
我也发生了同样的错误
Error: Port 5001 is not open, could not start functions emulator.
我尝试使用6.12.0
版,但出现类型错误。
如果firebase serve --host 127.0.0.1
为你解决; 也许你还没有设置你的hosts
文件。 Linux - 网络配置
不久前我遇到了同样的问题。
我发现我的计算机上的另一个终端上运行了 firebase。
因此,在尝试firebase serve
之前,请检查它是否在另一个终端上运行。
我希望它能像我一样解决你的问题。
首先,关闭所有选项卡重新启动 VS 代码,然后进入 firebase.json 文件,然后更改 ui 端口号,然后重新启动,它会起作用!
“ui”:{“启用”:真,“端口”:“输入任意数字”}
正如这里所建议的https://github.com/firebase/firebase-tools/issues/2856#issuecomment-902411134
升级 node.js 正在运行。
在MacOS Monterey 中,端口 5000 可能会被新的“AirPlay 接收器”占用。 这可以在设置 -> 共享中禁用:
用于禁用 AirPlay Receiver 的设置面板的屏幕截图
禁用 AirPlay 接收器(如果您不需要它)会释放端口 5000。
关闭所有内容,删除“运行”选项中的“预取”和“%temp%”,然后重新启动 PC。 对我有用
{
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"functions": {
"source": "functions"
},
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
},
"emulators": {
"auth": {
"port": 9099
},
"functions": {
"port": 5001
},
"firestore": {
"port": 8080
},
"hosting": {
"port": 5005
}
}
}
我使用的是 macOS Monterey 12.6,我刚刚将托管端口更改为“5005”,它对我来说工作正常
对我来说,打开 VPN 时它不起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.