错误
RN项目启动时报错:undefined is not an object (evaluating 'navigator.userAgent.match')
原因
userAgent中文名为用户代理,是服务器能够识别客户使用的操作系统及版本。
各浏览器自带userAgent,但RN生成的项目本质上仍然是APP,不具备这个字符串头。所以用真机/模拟器运行的项目会因为找不到userAgent的值报错。
ps.一个有趣的现象:用debugger或者chrome开启debug的时候,就不会报错(因为此时http请求实际走的是浏览器。而浏览器自带userAgent)
解决
手动为RN项目添加这个值。一般放在根目录下的index.js(或老版本的index.android.js)中
// index.js文件最开始
if (!window.navigator.userAgent) {
window.navigator.userAgent = "react-native";
}
也可以新建一个文件,然后在main.js中引用。
需注意
这个设置要在main.js中的代码之前。不能直接放在main.js中,否则会无效。