【问题标题】:Using Firebase in React Native shows a timer warning在 React Native 中使用 Firebase 会显示计时器警告
【发布时间】:2017-11-13 02:09:54
【问题描述】:

我正在使用 Firebase 和 React Native。 Firebase 向我显示了一个计时器警告,如屏幕截图所示。

我在React Native troubleshooting 指南中阅读了以下说明。

React Native 为 WebSocket 实现了一个 polyfill。这些 polyfill 是 初始化为您包含的 react-native 模块的一部分 通过从“react”导入 React 您的应用程序。如果你加载 另一个需要 WebSocket 的模块,例如 Firebase,请务必 在 react-native 之后加载/要求它:

import React from 'react';
import Firebase from 'firebase';

我尝试在 Firebase 之前导入 React。但是,我仍然不断收到这些计时器警告。该应用程序运行良好。我定期收到多个警告。任何帮助将不胜感激。

我正在使用最新的 React Native,警告出现在 Android 模拟器中。

【问题讨论】:

标签: android firebase react-native websocket


【解决方案1】:

要解决这个问题,只需增加变量 MAX_TIMER_DURATION_MS 的值。步骤如下:

  1. 转到 node_modules/react-native/Libraries/Core/Timer/JSTimers.js

  2. 查找变量 MAX_TIMER_DURATION_MS

  3. 将 60 * 1000 更改为 10000 * 1000,firebase 需要

  4. 保存更改并重新构建您的应用。

【讨论】:

  • 有没有办法在应用源代码中做到这一点?我有时必须删除node_modules
  • 这不是解决方案。这只是跳过错误并需要更改 node_modules。通过YellowBox.ignoreWarnings([Setting a timer for]) 可以实现相同(并且更好)!但是在 Firebase 中不使用 setTimeout 将是一个真正的解决方案
【解决方案2】:

您还可以通过包装器切换到本机 SDK,它通常性能更高,因为它是在本机完成的,因此没有计时器警告,而且您可以访问的不仅仅是身份验证和数据库模块。

react-native-firebase 是一个这样的包装器,它目前支持 10 多个 firebase 模块:

免责声明:以上内容的作者。

【讨论】:

    【解决方案3】:

    更改为两个变量的值对我有用。

    const FRAME_DURATION = 100000 / 60;

    const MAX_TIMER_DURATION_MS = 60 * 100000;

    【讨论】:

      【解决方案4】:

      它也对我有用。

      转到 node_modules/react-native/Libraries/Core/Timer/JSTimers.js

      查找变量 MAX_TIMER_DURATION_MS

      将 60 * 1000 更改为 10000 * 1000 ,firebase 需要

      保存更改并重新构建您的应用。

      【讨论】:

        【解决方案5】:

        改变价值观对我有用。

        const FRAME_DURATION = 100000 / 60;
        
        const MAX_TIMER_DURATION_MS = 60 * 100000;
        

        【讨论】:

        • 不是解决问题的办法,只是基本隐藏了警告。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-12
        • 1970-01-01
        • 2020-04-18
        • 2016-03-14
        • 1970-01-01
        • 2020-01-06
        相关资源
        最近更新 更多