我试图在本地提供Firebase功能,但是当我运行firebase serve
或firebase emulators:start
时,错误消息是:“端口5000未打开,无法启动功能仿真器。”
我正在使用Windows 10,因此我尝试更改端口号,检查端口是否被防火墙阻止,并且在防火墙中为端口5000-5010创建了新规则,但是这些方法均不适用于我
答案 0 :(得分:17)
对于Mac / Linux,使用终端/外壳程序来找到进程ID(PID),然后终止该进程。
sudo lsof -i :5000
sudo kill -9 PID
答案 1 :(得分:7)
这是您的端口号5000正在运行的某个进程。 因此,首先,您需要终止该过程。
要在ubuntu中查找进程ID
sudo lsof -i:5000
假设您的PID为14541
杀死进程
sudo杀死-9 14541
答案 2 :(得分:5)
或者使用其他端口,这是一个简单的解决方案。 例如, firebase服务-p 5001
答案 3 :(得分:4)
最近在官方github仓库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
文件夹。
这应该可以解决问题!
答案 4 :(得分:3)
只运行命令firebase即可-仅功能--host 0.0.0.0
答案 5 :(得分:3)
对于Windows用户:
checkPrinterStatus() {
return this.afdb.object('food/settings/printer').snapshotChanges()
.pipe(
map(res => {
return res.payload.val().isConnected;
}),
filter(isConnected => !!isConnected),
take(1),//use this if you want only 1 value; otherwise remove it
switchMap(() => {
return timer(5000, 3000).pipe(
switchMap(_ => this.getConnPrinterStatus()),
distinctUntilChanged()
)
})
)
}
然后在行尾找到进程ID(PID)。
netstat -ano|findstr "PID :5000"
命令taskkill /pid FOUNDPID /F
在VS Code上下文的终端中不起作用。为了成功终止对127.0.0.1:5000的侦听,它需要一个(提升的)CMD提示或等效的Powershell环境。
答案 6 :(得分: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)
答案 7 :(得分:1)
在哪里? node_modules / firebase-tools / lib / emulator / controller.js 我在node_modules中找不到“ firebase-tools”文件夹。 我只能找到firebase-funstions和firebase-admin。
答案 8 :(得分:1)
快速修复npm i -g firebase-tools@7.8.0
答案 9 :(得分:1)
lsof -t -i tcp:5000 | xargs kill
Mac用户的一种单行替代方法,它将进程ID直接传送到kill
。 h / t @manav
最初的问题是针对Windows的,但对其他问题可能有用,因为该问题现在在搜索结果中排名很高。
答案 10 :(得分:1)
答案 11 :(得分:0)
这对我有用。
只需重新启动系统即可。
答案 12 :(得分:0)
解决方案:Firebase服务错误:端口5000未打开。无法启动功能模拟器
如果在运行Firebase时收到以下错误消息之一,则可以通过切换到其他版本的Firebase工具轻松解决此问题。
端口5000未打开,无法启动功能模拟器。
如果您使用的是Firebase Tools版本6,则可以切换到最新版本(6.12.0),也可以尝试使用v7.2.2。要更改为Firebase Tools版本,请运行以下节点程序包管理器命令。
npm install -g firebase-tools@6.12.0
答案 13 :(得分:0)
如果firebase serve --host 127.0.0.1
为您解决;也许您还没有设置您的 hosts
文件。 Linux - Network configuration
答案 14 :(得分:0)
不久前我也遇到过同样的问题。
我发现我的计算机上的另一个终端上运行了 firebase。
因此,在尝试 res.results.forEach(x => {
x._source = Object.assign(x._source, x.highlight);
}
之前,请检查它是否在另一个终端上运行。
希望它能像我一样解决你的问题。