Я щойно модернізував свій React Native, і тепер симулятор iOS має купу попереджень. Як виправити їх, як приховати ці попередження, щоб я побачив, що знаходиться внизу?
Я щойно модернізував свій React Native, і тепер симулятор iOS має купу попереджень. Як виправити їх, як приховати ці попередження, щоб я побачив, що знаходиться внизу?
Відповіді:
Згідно Реагувати Native документації , ви можете приховати попереджувальні повідомлення, встановивши , disableYellowBox
щоб , true
як це:
console.disableYellowBox = true;
Кращий спосіб вибірково приховати певні попередження (які нескінченно з’являються після оновлення до останньої та найкращої версії RN) - встановити console.ignoredYellowBox у загальному файлі JS у вашому проекті. Наприклад, після модернізації свого проекту сьогодні до 0,25,1 RN я бачив багато ...
Попередження: ReactNative.createElement застарілий ...
Я все ще хочу бачити корисні попередження та повідомлення про помилки від React-Native, але я хочу скасувати це особливе попередження, оскільки воно надходить із зовнішньої бібліотеки npm, яка ще не включила остаточні зміни в RN 0,25. Тож у своєму App.js я додаю цей рядок ...
// RN >= 0.63
import { LogBox } from 'react-native';
LogBox.ignoreLogs(['Warning: ...']);
// RN >= 0.52
import {YellowBox} from 'react-native';
YellowBox.ignoreWarnings(['Warning: ReactNative.createElement']);
// RN < 0.52
console.ignoredYellowBox = ['Warning: ReactNative.createElement'];
Таким чином, я все ще отримую інші помилки та попередження, корисні для мого середовища розробників, але я більше не бачу цього конкретного.
Щоб вимкнути жовте поле
console.disableYellowBox = true;
в будь-якій точці вашої програми. Зазвичай у кореневому файлі, тому він застосовуватиметься як до iOS, так і до Android.
Наприклад
export default class App extends React.Component {
render() {
console.disableYellowBox = true;
return (<View></View>);
}
}
У вашому файлі app.js відповідно до методу життєвого циклу будь-якого компонента, як у компонентDidmount (), ви повинні додати їх обоє, виключаючи будь-які, не буде працювати.
console.ignoredYellowBox = ['Warning: Each', 'Warning: Failed'];
console.disableYellowBox = true;
add this line in your app main screen.
console.disableYellowBox = true;
Додайте наступний код у файл 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);
Якщо ви хочете сховати їх у певній збірці, оскільки ви робите демонстрацію чи щось подібне, ви можете відредагувати свою схему Xcode, щоб зробити її збіркою випуску, і ці жовті попередження не з’являться. Крім того, ваш додаток працюватиме набагато швидше.
Ви можете відредагувати схему для свого тренажера та реального пристрою, виконавши такі дії:
Product
> Scheme
>Edit Scheme...
Build Configuration
від на Debug
до Release
.Release
: без попередження, і швидше додаток!
Release
Для тих, хто йде таким чином, намагаючись відключити червоні попередження від консолі, які дають абсолютно марну інформацію, станом на feb / 17, ви можете десь додати цей рядок коду
console.error = (error) => error.apply;
Відключає всіх console.error
console.disableYellowBox = true;
це працювало на рівні програми. Помістіть його де-небудь у файл index.js
Щоб вимкнути жовте поле, console.disableYellowBox = true;
будь-де в додатку. Зазвичай у кореневому файлі, тому він застосовуватиметься як до iOS, так і до Android.
Для отримання більш детальної інформації, будь ласка, перевірте офіційний документ
console.disableYellowBox = true;
console.ignoredYellowBox = ['Попередження: Кожен', 'Попередження: Не вдалося'];
Я виявив, що навіть коли я відключив конкретні попередження (повідомлення із жовтою коробкою) за допомогою вищезазначених методів, попередження було вимкнено на моєму мобільному пристрої, але вони все ще реєструвались на моїй консолі, що дуже дратувало і відволікало.
Щоб запобігти реєстрації попереджень на консолі, ви можете просто змінити 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
метод для реєстрації помилок (повідомлення в червоній коробці), тому я припускаю, що ця методика може використовуватися і для фільтрації конкретних помилок.
У вашому файлі AppDelegate.m ви можете змінити цей рядок:
jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
і замінити dev=true
на dev=false
кінці.
(але не для власного коду)
чому: при ініціалізації нового додатка RN проект Xcode містить ближче до 100 попереджень, які відволікають шум (але, мабуть, нешкідливий інакше)
Рішення: встановити заборонні всі попередження в так під параметрами збірки для відповідних цілей.
Я рекомендую невеликий розробник інструментів нашої команди, він збирає всі попередження та помилки у піктограму поплавця. Порівняйте з console.disableYellowBox = true;
, ви все ще можете побачити, де є попередження або помилка, але це не турбує вас.
WT-Console Github Repo: https://github.com/WeBankFinTech/wt-console