React-Native 那些坑之 No bundle URL present.

关键词: No bundle URL present  宏 DEBUG  RCT_DEV 无法调试 摇一摇


官方issue 如下, 英文好的可以直接去看讨论

https://github.com/facebook/react-native/issues/2246#issuecomment-217187621

由于公司业务需要,最近需要配置多个环境,方便快速出包,本来以为很简单的,随便刷刷刷 配置几个configuration就欧了, 可是配置完之后,才发现隐藏着无比巨大的坑


Release 环境下还好,没什么问题, 但是在debug 模式下, 就开始报No bundle URL present. 的错误

跳转进源码 很快就能定位到问题所在

- (NSString*)packagerServerHost

{

  NSString*location = [self jsLocation];

  if(location !=nil) {

    returnlocation;

  }

#if RCT_DEV

  NSString *host = [self guessPackagerHost];

  if(host) {

    returnhost;

  }

#endif

  return nil;

}


在于guessPackagerHost 那个判断没执行


再跳到RCTDefines 里面看定义

#ifndef RCT_DEV

#if DEBUG

#define RCT_DEV1

#else

#define RCT_DEV0

#endif

#endif



这就很诡异了, 明明已经配置了DEBUG宏, 但是为啥这里的判断出问题呢? 

在翻阅了几个小时的官方issue之后,终于找到问题了


原因是: RN 只认默认的Debug 配置是 debug模式, 其他的环境配置一律默认是release 模式,这就导致了这个问题

解决办法很简单, 只需要在cocoapod 的pod file 顶部插入以下代码,指定环境变量对应的debug模式即可


xcodeproj '项目名', '对应的环境配置名' => :debug


这个问题简直让人吐血

你可能感兴趣的:(React-Native 那些坑之 No bundle URL present.)