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
这个问题简直让人吐血
推荐阅读
- 那些年我们玩过的街机
- 那些反串过的艺人-最是美色如醉人
- 【挑战日更】Day6.《终身学习.10个你必须掌握的未来生存法则》摘录之三
- 糖尿病肾病那些事儿
- 那些年,我们一起追过的《流星雨》
- 那些直击灵魂深处的句子
- 关于誓言
- 你说花美的如星
- 问题是那些问题,解决全在自己----转逆境为喜悦
- 那些没上大学的人,现在怎么样了()