我编辑 AppDelegate.m 以监听端口 8080 但它仍然失败,因为 8081 正在使用中

I Edited AppDelegate.m to listen to port 8080 but it still fails because 8081 is in use

我正在使用 xcode 设置 react-native。端口 8081 被一个必须留在那里的进程占用,所以我希望打包程序改用端口 8080。我按照 facebook 的说明进行操作,发现 here 但仍然收到错误消息 "port 8081" 已在使用中。为什么在我编辑 AppDelegate.m 后 React Native 仍然尝试使用端口 8081?

下面是删除了注释部分的 AppDelegate.m 代码:

#import "AppDelegate.h"

#import "RCTRootView.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  NSURL *jsCodeLocation;


  jsCodeLocation = [NSURL    URLWithString:@"http://localhost:8080/index.ios.bundle"];

  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
  moduleName:@"amapp"
  launchOptions:launchOptions];

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [[UIViewController alloc] init];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];
  return YES;
}

@end

尝试清除 xcode 项目中的缓存。 命令+shift+k

截至 2015 年 10 月 25 日,这似乎是 React Native 项目中的一个未解决问题:https://github.com/facebook/react-native/issues/3330

我通过从 8081 到新端口(在我的例子中是 8082)执行全局 find/replace 来让它工作。丑陋,但它奏效了。

这不是真正的解决方案,但它是我找到的最佳解决方法。假设您使用 OSX:

cd myproject
find ./ -type f -exec sed -i '' 's/8081/8082/g' {} \;