0

我有两个协同工作的应用程序——一个消费者和一个提供者。当我在消费者应用程序中请求任务时,我需要检查提供者应用程序中是否收到了任务。如果我没有在同一台计算机上同时运行两个应用程序,这会使调试变得非常困难。

我尝试先手动设置默认端口,然后再react-native start --port 8082设置另一个。8082 上的应用程序出错。我试过在 8082 上单独启动一个。该应用程序忽略它并启动另一个 Metro 实例。

这两个测试都是针对 ios 模拟器的。我也尝试过在 ios 上运行一个,在 android 上运行另一个,但同样没有成功。

这甚至可能吗?我听说有人说他们放弃了尝试,其他人则深入研究节点模块以手动设置端口。我在谷歌或这里没有找到太多指导。

我希望有人可以帮助我解决它或说服我这是一个非首发。谢谢。

4

1 回答 1

0

找到了一个可行的解决方案(大部分工作来自我的同事 Clayton Ray)。

运行双ios模拟器

我的系统:

  • MacBook Pro(13 英寸,2017 年)
  • 2.5 GHz 双核 Intel Core i7
  • 16 GB 2133 MHz LPDDR3。

假设我有AppAAppBAppA正在开发中(功能、错误修复等)。这将在默认的 Metro 端口 8081 上运行。

AppB项目根目录中,我导航到

ios/Pods/Headers/Private/React-Core/RCTDefines.h.

在第 87 行附近,你会发现这个代码块

#ifndef RCT_METRO_PORT
#define RCT_METRO_PORT 8081
#else

将 8081 交换为您的首选端口,通常为 8082。保存您的更改。从 CLI,运行

npx react-native start --port 8082

现在使用非默认模拟器(以区分两者)启动您的应用程序,例如

npx react-native run-ios --simulator "iPhone 8s".

打开一对单独的终端窗口,导航到AppA项目根目录,然后像往常一样启动 Metro 和应用程序。

可能的警告

  • 动力不足的 Mac 可能会出现问题
  • 如果您更新 Pod 安装,更改可能会被覆盖。不过,很简单,可以修复。
  • 确保将工作流程分开。我发现我有时会混淆我想默认启动哪个应用程序。
  • 如果您需要在AppB上执行工作,只需通过将 AppA 端口设置为 8082 并将 AppB 端口返回为 8081 来切换这些步骤。
于 2020-06-09T16:46:22.107 回答