繁体   English   中英

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

[英]Firebase serve error: Port 5000 is not open. Could not start functions emulator

我正在尝试在本地提供 firebase 功能,但是当我运行firebase servefirebase 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

端口50007000由 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

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

也关闭此窗口: cmd窗口关闭

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM