我在尝试调试本机反应时遇到问题。我可以使用 react native 调试器进行调试,或者只是在浏览器中进行调试。但是我收到的错误消息通常并不指向导致错误的行。例如,我会得到像这样的普遍错误:
ExceptionsManager.js:44 ReferenceError: object is not defined
This error is located at:
in Navigator (at createAppContainer.js:430)
in NavigationContainer (at SceneView.js:9)
in SceneView (at SwitchView.js:12)
in SwitchView (at createNavigator.js:80)
in Navigator (at createAppContainer.js:430)
in NavigationContainer (at App.js:59)
in StyleProvider (at App.js:57)
in MobXProvider (at App.js:56)
in App (at renderApplication.js:40)
in RCTView (at AppContainer.js:101)
in RCTView (at AppContainer.js:119)
in AppContainer (at renderApplication.js:39)
有没有办法调试并获得导致错误实际原因的正确堆栈跟踪?
编辑:我发现了问题。我的代码看起来像这样:
//LoggedInNavigator.js
import React from 'react';
import { createBottomTabNavigator, createAppContainer } from 'react-navigation';
import { Button, Footer, FooterTab } from 'native-base';
import SetupNavigator from './SetupNavigator';
import PremiumNavigator from './PremiumNavigator';
SetupNavigator.navigationOptions = ({ navigation: { state: { routes, index } } }) => {
let tabBarVisible = false;
return {
tabBarVisible,object //<this was the problem
};
};
PremiumNavigator.navigationOptions = ({ navigation: { state: { routes, index } } }) => {
let tabBarVisible = false;
return {
tabBarVisible,
};
};
//some more navigators here
const navigators = {
Setup: SetupNavigator,
Premium: PremiumNavigator,
};
console.log('navigators = ', navigators);
const loggedInNav = createBottomTabNavigator({
...navigators
},
{
initialRouteName: 'SetupNavigator',
tabBarPosition: 'bottom',
tabBarComponent: props => {
return (
<Footer style={{ height: 58 }}>
<FooterTab style={{ alignItems: 'center' }}>
<Button
active={false}
onPress={() => props.navigation.navigate('HotelInfo')}>
//tabbar content
</Button>
</FooterTab>
</Footer>
);
},
defaultNavigationOptions: ({ navigation }) => ({
tabBarVisible: false,
}),
}
);
export default createAppContainer(loggedInNav);
就像代码中的注释指出问题是一个简单的错误。我可以做些什么让我的调试器指出这个错误起源的行/文件吗?我现在(事后看来)意识到错误消息指出“对象”不存在是正确的,但这不是很有帮助,因为我找不到错误的来源,而且这不是唯一的在我的项目中使用“对象”的实例,我也不能假设这个错误甚至起源于我自己的代码库。