firebase 服务:supervisorPort (5001) 已在使用中

firebase serve: supervisorPort (5001) is already in use

我构建了这个 React App,允许用户添加待办事项,并将项目标记为 completed/active。 Todo 项存储在 Cloud firestore 中。

我想在应用程序上启用全文搜索,一种方法是创建一个云函数,每当云 firestore 见证创建操作时,它就会将索引写入 Algolia。

在我的应用程序根目录中,我 initialize cloud functions and then implement the onTodoAdded function。完成后,我在 functions 目录下 运行 firebase serve 并得到错误:

=== Serving from '/Users/evan/source/react-redux-todos'...

i  functions: Preparing to emulate functions.
Warning: You're using Node.js v10.6.0 but Google Cloud Functions only supports v6.11.5.
i  hosting: Serving hosting files from: build
✔  hosting: Local server: http://localhost:5000
error: SUPERVISOR error Error: listen EADDRINUSE 127.0.0.1:5001
    at Server.setupListenHandle [as _listen2] (net.js:1335:14)
    at listenInCluster (net.js:1383:12)
    at GetAddrInfoReqWrap.doListen [as callback] (net.js:1509:7)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:61:10)
error: supervisorPort (5001) is already in use
i  functions: No HTTPS functions found. Use firebase functions:shell if you would like to emulate other types of functions.

要获得完整的调试日志,请查找 here

然而,这个命令工作正常:firebase serve --only functions

=== Serving from '/Users/evan/source/react-redux-todos'...

i  functions: Preparing to emulate functions.
Warning: You're using Node.js v10.6.0 but Google Cloud Functions only supports v6.11.5.
i  functions: No HTTPS functions found. Use firebase functions:shell if you would like to emulate other types of functions.

因为它说 supervisorPort(5001) 已经在使用中,所以我 lsof -i:5001 没有找到进程。我也关闭我的笔记本电脑并重新启动,得到同样的错误。

我发现了类似的问题 here,但是没有找到解决方案。

我仍然不知道原因,但是添加--port=9000解决了问题。例如,firebase serve --only functions --port=9000。归功于 restPort (5001) is already in use #142.

我在更新到 macOS Mojave 10.14.1(适用于 10.14)后遇到了同样的错误。 error: supervisorPort (5001) is already in use 它让我陷入了额外的更新和配置这个兔子洞,最终让它发挥作用。

1 更新节点包

我将这些项目更新为这些版本(截至撰写本文时为最新版本)

  • firebase 函数:2.1.0
  • 火力基地:5.5.8

我删除了 node_modules 文件夹并重新安装了所有软件包。

2 需要 Firestore 模拟器设置

下次我尝试服务时,firebase 给了我这个错误: Setup required, please run: firebase setup:emulators:firestore

由于我最初使用 mac 时遇到的奇怪权限问题,我实际上不得不 运行 node_modules/.bin/firebase setup:emulators:firestore

3 然后....修复 Java 运行时问题

在我的下一次发球尝试中,我看到 firestore: No Java runtime present, requesting install. Mac 弹出一个页面,您可以在其中 "download java for mac"。这不是你真正需要的。您确实需要启用命令行界面的 Java SE Development Kit

那么...您下次尝试服务时可能会遇到这些错误

error: restPort (5002) is already in use
error: SUPERVISOR error Error: listen EADDRINUSE 127.0.0.1:5001
    at Object._errnoException (util.js:1022:11)
    at _exceptionWithHostPort (util.js:1044:20)
    at Server.setupListenHandle [as _listen2] (net.js:1351:14)
    at listenInCluster (net.js:1392:12)
    at GetAddrInfoReqWrap.doListen [as callback] (net.js:1501:7)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:97:10)
error: supervisorPort (5001) is already in use

但是尽管有这些错误,Firebase 仍然以某种方式继续成功提供服务。它仍然显示我的应用超过 http://localhost:5000

希望对您有所帮助!