正如Chris Geirman所说,问题在于JavaScript错误.我不确定有类似问题的人是否会找到这个线程,但如果他们找到了,下面是正在发生的奇怪错误.
我创建了一个简单的ORM系统,有一个基本模型和一系列从中继承的模型.BaseModel构造函数如下所示:
constructor(props = {}, relations = {}) {
Object.keys(props).forEach((k) => {
// Save props to object
this[k] = props[k];
});
this.relations = relations;
this.className = this.constructor.name;
}
最后一句话就是问题所在.在我的本地模拟器上,如果我将应用程序插入手机,它就可以正常工作.如中所示,如果消息模型继承自BaseModel,则调用var msg = new Message(data, relations); msg.className
返回Message
.
而是通过TestFlight或FabricBundle /归档/发送应用程序.io缩小并删除JavaScript,从而更改类名.所以,如果我这样做--var msg = new Message(data, relations); msg.className
--我会得到一个随机变量名,比如't'.
这是我的应用程序中的一个问题,因为我的主页包含一个与类名无关的switch语句:
iconContent() {
return {
Message: {
icon: <Image style={styles.feedItemIconImage} source={ require('../assets/img/icon_message.png') } />,
color: c.grass
}, ...
}[this.props.className] // from the model item
}
但'Message'
并不像预期的那样,this.props.className
-'t'
的值是.所以,如果我try 挖掘color
的值,我会遇到一个错误,因为我试图访问null
的color
属性.
为什么没有报告,我不知道(我按照克里斯的建议安装了哨兵,但它似乎仍然没有报告那个错误).
但事情就是这样.当我通过TestFlight/Fabric将应用程序安装到手机上时,小型化/丑化发生了only次,这就是为什么应用程序只有在这种情况下才会崩溃.
希望这可以避免任何人遇到类似的错误,从撕裂他们的头发.