React Native——无法启动,因为 HTTP 服务器已被另一个 WebSocket 服务器使用

React Native -- cannot start because HTTP server already being used by another WebSocket server

我正在 运行ning npx react-native start/npx react-native 运行-android,并且一切正常;但是,该应用程序无法正常启动服务器。这是我收到的错误:

Error: The HTTP/S server is already being used by another WebSocket server
    at new WebSocketServer (.../node_modules/ws/lib/websocket-server.js:83:15)
    at Object.attachToServer (.../node_modules/react-native/node_modules/@react-native-community/cli/build/commands/server/messageSocket.js:93:15)
    at Object.runServer [as func] (.../node_modules/react-native/node_modules/@react-native-community/cli/build/commands/server/runServer.js:127:37)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async Command.handleAction (.../@react-native-community/cli/build/index.js:164:9)

我试过杀掉所有与react-native相关的进程,即使我重启系统,这个错误仍然存​​在。关于可能导致此问题的原因有什么想法吗?

在我看来,您的 processTicksAndRejections() 方法正在尝试设置自己的 WebSocketServer 实例来完成其工作,而不是使用已经设置好的实例。您的错误消息意味着您

  1. 已经有一个 http/s 服务器运行
  2. 已经设置了 websocket 服务器
  3. 您正在尝试在该现有 http/s 服务器上设置另一个 websocket 服务器。

如果您尝试 运行 同一端口上的两个服务器进程,则会显示不同的错误消息。

我最终通过完全删除依赖项@react-native-community/cli-platform-android 解决了这个问题,但我对解决方案并不完全满意,因为我必须 运行 npx react-native start 和 npx react -native 运行-android分开。