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

时间:2019-08-17 14:55:16

标签: javascript firebase firebase-tools

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

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

15 个答案:

答案 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)

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

也关闭此窗口: cmd window to close

答案 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); } 之前,请检查它是否在另一个终端上运行。

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