我刚刚升级了我的React Native,现在iOS模拟器有一堆警告。除了修复它们之外,我如何隐藏这些警告以便能够看到下面的内容?
答案 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方案以使其成为版本构建,并且这些黄色警告不会显示。此外,您的应用程序运行速度会更快。
您可以通过执行以下操作编辑模拟器和真实设备的方案:
Product
&gt; Scheme
&gt; Edit Scheme...
Build Configuration
从Debug
更改为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)
(但不适用于您自己的代码)
为什么:在初始化新的RN-app时,Xcode项目包含更接近100个警告,这会分散噪音(但可能无害)
解决方案:将禁止所有警告设置为是 Build Settings 下的相关目标。
答案 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。 但这只是在我处于开发阶段的时候。