你如何在React Native iOS模拟器中隐藏警告?

时间:2016-02-10 07:39:16

标签: ios react-native show-hide

我刚刚升级了我的React Native,现在iOS模拟器有一堆警告。除了修复它们之外,我如何隐藏这些警告以便能够看到下面的内容?

18 个答案:

答案 0 :(得分:150)

根据React Native Documentation,您可以通过将disableYellowBox设置为true来隐藏警告消息:

console.disableYellowBox = true;

答案 1 :(得分:72)

有选择地隐藏某些警告(在升级到最新且最好的RN版本后无限期显示)的更好方法是在项目的公共JS文件中设置console.ignoredYellowBox。例如,在今天将我的项目升级到RN 0.25.1后,我看到了很多......

警告:不推荐使用ReactNative.createElement ...

我仍然希望能够看到来自React-Native的有用的警告和错误消息,但是我想要压缩这个特别的警告,因为它来自一个尚未合并的外部npm库。突破RN 0.25的变化。所以在我的App.js中我添加了这一行...

// RN >= 0.52
import {YellowBox} from 'react-native';
YellowBox.ignoreWarnings(['Warning: ReactNative.createElement']);

// RN < 0.52
console.ignoredYellowBox = ['Warning: ReactNative.createElement'];

这样我仍然会得到其他错误和警告对我的开发环境有帮助,但我不再看到那个特定的错误。

答案 2 :(得分:7)

在app.js文件的任何组件的生命周期方法下,例如componentDidmount() 您必须同时添加这两项,否则将不起作用。

console.ignoredYellowBox = ['Warning: Each', 'Warning: Failed'];
console.disableYellowBox = true;

答案 3 :(得分:7)

要禁用黄框位置

const elements = require('../models/elements')(); // change this
const elements = require('../models/elements'); // for this

应用程序中任何位置。通常在根文件中,因此它将同时适用于iOS和Android。

例如

console.disableYellowBox = true; 

答案 4 :(得分:4)

如果您正试图演示应用程序。

如果您想在特定版本中隐藏它们,因为您正在进行演示或其他操作,您可以编辑Xcode方案以使其成为版本构建,并且这些黄色警告不会显示。此外,您的应用程序运行速度会更快。

您可以通过执行以下操作编辑模拟器和真实设备的方案:

  1. 在XCode的Project中。
  2. Product&gt; Scheme&gt; Edit Scheme...
  3. Build ConfigurationDebug更改为Release

答案 5 :(得分:3)

console.disableYellowBox = true;

这适用于应用程序级别将其放在index.js文件中的任何地方

答案 6 :(得分:3)

我发现,即使我使用上述方法禁用了特定警告(黄框消息),警告 仍在我的移动设备上被禁用,但它们仍被记录到控制台中,这非常烦人和分心。

要防止将警告记录到控制台,您可以简单地覆盖warn对象上的console方法。

// This will prevent all warnings from being logged
console.warn = () => {};

甚至可以通过测试提供的消息来仅禁用特定警告:

// Hold a reference to the original function so that it can be called later
const originalWarn = console.warn;

console.warn = (message, ...optionalParams) => {
  // Insure that we don't try to perform any string-only operations on
  // a non-string type:
  if (typeof message === 'string') {
    // Check if the message contains the blacklisted substring
    if (/Your blacklisted substring goes here/g.test(message))
    {
      // Don't log the value
      return;
    }
  }

  // Otherwise delegate to the original 'console.warn' function
  originalWarn(message, ...optionalParams);
};

如果您不能(或不想)使用正则表达式来测试字符串,则indexOf方法将同样有效:

// An index of -1 will be returned if the blacklisted substring was NOT found
if (message.indexOf('Your blacklisted substring goes here') > -1) {
  // Don't log the message
  return;
}

请注意,此技术将过滤通过warn函数的所有消息,无论它们来自何处。 因此,请注意不要指定过多的黑名单,以免抑制其他可能源自React Native之外的其他有意义的错误。

此外,我相信React Native使用console.error方法来记录错误(红色框消息),因此我假设该技术也可以用于滤除特定错误。

答案 7 :(得分:2)

要在应用程序中的任何位置禁用黄色框console.disableYellowBox = true;。通常在根文件中,因此它将同时适用于iOS和Android。

有关详细信息,请检查official document

答案 8 :(得分:2)

在您的 index.js 文件中添加以下代码

console.disableYellowBox = true;

    import {AppRegistry} from 'react-native';
    import App from './App';
    import {name as appName} from './app.json';

    console.disableYellowBox = true;



AppRegistry.registerComponent(appName, () => App);

答案 9 :(得分:2)

对于那些试图从控制台禁用红色警告的人来说,这提供了绝对无用的信息,从feb / 17开始,你可以在某处添加这行代码

console.error = (error) => error.apply;

停用所有console.error

答案 10 :(得分:1)

AppDelegate.m 文件中,您可以更改此行:

jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];

并在最后用dev=true替换dev=false

答案 11 :(得分:1)

RN >= 0.62

import {LogBox} from 'react-native'

在导入下,添加

LogBox.ignoreLogs(['...']);

而不是 '...', 您可以编写要隐藏的警告。 例如, 我收到警告 VirtualizedLists 永远不应该...... 然后我可以写成

LogBox.ignoreLogs(['VirtualizedLists']);

如果你想添加另一个错误,你可以写为

LogBox.ignoreLogs(['VirtualizedLists','Warning:...]);

答案 12 :(得分:0)

相关:从React Native库

中抑制Xcode警告

(但不适用于您自己的代码)

为什么:在初始化新的RN-app时,Xcode项目包含更接近100个警告,这会分散噪音(但可能无害)

解决方案:禁止所有警告设置为 Build Settings 下的相关目标。

enter image description here

Disable warnings in Xcode from frameworks

https://github.com/facebook/react-native/issues/11736

答案 13 :(得分:0)

console.ignoredYellowBox = ['警告:每个”,'警告:失败'];

答案 14 :(得分:0)

console.disableYellowBox = true;

答案 15 :(得分:0)


add this line in your app main screen.
  

console.disableYellowBox = true;

答案 16 :(得分:0)

对我来说,下面几行目前我正在使用 react native 0.64

  import { LogBox } from 'react-native';

  LogBox.ignoreLogs(['Warning: ...']); //Hide warnings

  LogBox.ignoreAllLogs();//Hide all warning notifications on front-end

答案 17 :(得分:0)

我喜欢把 console.disableYellowBox = true 放在文件根目录上,比如 App。 但这只是在我处于开发阶段的时候。