代码之家  ›  专栏  ›  技术社区  ›  user1790300

expo+react native:发送日志消息时出现问题

  •  3
  • user1790300  · 技术社区  · 5 年前

      node_modules/expo/build/logs/LogSerialization.js:146:14 in _captureConsoleStackTrace
      node_modules/expo/build/logs/LogSerialization.js:41:24 in Object.serializeLogDataAsync$
      node_modules/regenerator-runtime/runtime.js:62:39 in tryCatch
      node_modules/regenerator-runtime/runtime.js:288:21 in Generator.invoke [as _invoke]
      node_modules/regenerator-runtime/runtime.js:114:20 in Generator.prototype.(anonymous
      node_modules/regenerator-runtime/runtime.js:62:39 in tryCatch
      node_modules/regenerator-runtime/runtime.js:152:19 in invoke
      node_modules/regenerator-runtime/runtime.js:187:10 in <unknown>
      node_modules/promise/setimmediate/core.js:45:4 in tryCallTwo
      node_modules/promise/setimmediate/core.js:200:12 in doResolve
    

    以下是错误的屏幕截图:

    enter image description here

    这个错误是什么意思?我发现有个医生说要搬家控制台.log声明和删除的那些我有,但没有帮助。

    1 回复  |  直到 5 年前
        1
  •  14
  •   Tim G. Pegas    5 年前

    今天早上我也遇到了这个奇怪的错误。我正在用Expo Client开发react native,我正在用流行的MERN堆栈(mongoDB、Express、react native和Node.js节点). 我要说的是,因为我使用了很多,我是说后端有很多控制台日志,到目前为止这并没有给我带来任何问题。所以在我的情况下,我不确定这个错误是否源于控制台.log我在用。我在控制台(端口19001)中检查了expo调试器的stacktrace,因为红色屏幕没有提供关于错误来源的很多信息(很多 <unknown>

    payload: {
      config: {
         .
         .
         .
     }
     data: { the only part that i needed... }
     headers: {
        .
        .
        .
    }
    
    ..other stuff from the response..
    

    我真正感兴趣的薪水是在道具钥匙下 data 这是我唯一需要的回应。但是,由于我的无知,我把所有的东西都送到了减速器。所以我要说的是 object 作为 payload 我只需要一部分。所以当我做了一些解构并保存 正如我上面提到的,错误消失了。

    总之,对于可能会偶然发现这个实际上不是错误的“错误”的其他人来说,bc应用程序不会崩溃或发生任何事情,因为您可以关闭窗口,然后应用程序继续运行,当您从服务器执行某些提取时,请确保只保留 数据 而不是全部 response redux-logger 抛出这个bc它不喜欢它的结构。

    我希望这对你也有帮助。

        2
  •  22
  •   D.K    5 年前

    这是因为React本机控制台记录器无法解析来自Axios的JSON对象。

    将导致此错误的代码:

    Axios.post(URL).then(function (response)
    {
    console.log("POST RESPONSE: "+response);
    }
    

    修复此错误的代码:

    Axios.post(URL).then(function (response)
    {
    console.log("POST RESPONSE: "+JSON.stringify(response));
    }
    
        3
  •  5
  •   Developer_Gren    5 年前

    项目堆栈(对错误很重要的一点):

    expo: ^34.0.1 react-native: SDK 34 react-navigation: 4.0.5 react-navigation-drawer: ^2.2.1

    在这个项目中我没有使用 react-redux axios 我真的在用 graphql , @apollo/react-hooks apollo-boost 处理网络请求和本地状态管理。

    回答:

    react-navigation . 我正在创建一个抽屉导航器 createDrawerNavigator 根据 React Navigation API

    我想用 contentComponent 财产 DrawerNavigatorConfig 创建自定义 DrawerNavigatorItems .

    我在 唯一参数为的属性 props

    这导致了错误:

    console.log() 在上面提到的匿名箭头函数中

    我在我的iOS模拟器上收到一个错误,上面写着: `控制台错误:“向开发环境发送日志消息时出现问题”

    请参阅下面的代码:

    import {createDrawerNavigator, DrawerNavigatorItems} from "react-navigation-drawer";
    import ProfileNavigator from "../Profile/Profile";
    import Colors from "../../constants/colors";
    import {AsyncStorage, Button, SafeAreaView, View} from "react-native";
    import React from "react";
    import {Logout} from "../Common";
    import HomeNavigator from "../Home/Home";
    
    const AppDrawerNavigator = createDrawerNavigator(
        {
            Profile: ProfileNavigator
        },
        {
            contentOptions: {
                activeTintColor: Colors.primary
            },
            contentComponent: props => {
                console.log(props) // THIS IS THE ISSUE CAUSING THE ERROR!!!!!!
                return (
                    <View style={{ flex: 1, paddingTop: 20 }}>
                        <SafeAreaView forceInset={{ top: 'always', horizontal: 'never' }}>
                            <DrawerNavigatorItems {...props} />
                            <Button
                                title="Logout"
                                color={Colors.primary}
                                onPress={Logout}
                            />
                        </SafeAreaView>
                    </View>
                )
            },
            drawerType: 'slide',
            unmountInactiveRoutes: true
        }
    )
    
    export default AppDrawerNavigator
    
        4
  •  2
  •   Wakas Abbasid    4 年前

    为了简化以上所有的答案,这个问题只在您记录一个对象时发生,这个对象太大,控制台无法显示。因此,在记录来自API或服务器的响应时,一定要添加JSON.stringify(结果)。

        5
  •  1
  •   סטנלי גרונן Abhishek Singh    4 年前

    console.log(result) .

    console.log(JSON.stringify(result))