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

关键词: No bundle URL present宏 DEBUGRCT_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宏, 但是为啥这里的判断出问题呢?
【React-Native|React-Native 那些坑之 No bundle URL present.】在翻阅了几个小时的官方issue之后,终于找到问题了


原因是: RN 只认默认的Debug 配置是 debug模式, 其他的环境配置一律默认是release 模式,这就导致了这个问题
解决办法很简单, 只需要在cocoapod 的pod file 顶部插入以下代码,指定环境变量对应的debug模式即可


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


这个问题简直让人吐血

    推荐阅读