आप रिएक्टिव नेटिव आईओएस सिम्युलेटर में चेतावनी कैसे छिपाते हैं?


106

मैंने अभी-अभी अपने रिएक्ट नेटिव को अपग्रेड किया है और अब iOS सिम्युलेटर में चेतावनी का एक गुच्छा है। उन्हें ठीक करने के अलावा, मैं इन चेतावनियों को कैसे छिपाऊं ताकि मैं देख सकूं कि नीचे क्या है?

जवाबों:


208

मूल निवासी प्रतिक्रिया के अनुसार प्रलेखन , आप की स्थापना करके चेतावनी संदेश छिपा कर सकते हैं disableYellowBoxकरने के लिए trueइस तरह:

console.disableYellowBox = true;

3
यह मेरे लिए काम करता है, लेकिन कंसोल ने जो अन्य उत्तर नहीं दिए हैं।
sdfsdf

6
धन्यवाद! यह चयनित उत्तर होना चाहिए।
श्रीजीत रामकृष्णन

1
क्षमा करें, लेकिन आप कंसोल को कहां जोड़ सकते हैं।
मिशेल अर्टेटा

2
@ माय, आपकी स्क्रिप्ट की कोई भी जगह, जब आप पीले बॉक्स को निष्क्रिय करना चाहते हैं।
मौसावी 7

2
इसे लगाने के लिए एक अच्छी जगह RootContainer घटक के निर्माता पर है!
फर्नांडो विएरा

102

चुनिंदा चेतावनियों को छिपाने का एक बेहतर तरीका (जो कि नवीनतम और महानतम आरएन संस्करण में अपग्रेड के बाद अनिश्चित काल के लिए दिखाई देता है) अपने प्रोजेक्ट में एक सामान्य जेएस फाइल में कंसोल.इनगार्डयेलोबॉक्स सेट करना है। उदाहरण के लिए, आज अपनी परियोजना को आरएन 0.25.1 में अपग्रेड करने के बाद मैं बहुत कुछ देख रहा था ...

चेतावनी: ReactNative.createElement हटा दिया गया है ...

मैं अभी भी रिएक्ट-नेटिव से उपयोगी चेतावनियों और त्रुटि संदेशों को देखने में सक्षम होना चाहता हूं, लेकिन मैं इस विशेष चेतावनी को स्क्वैश करना चाहता हूं क्योंकि यह एक बाहरी एनपीएम लाइब्रेरी से आ रहा है जिसने अभी तक आरएन 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'];

इस तरह मुझे अभी भी अन्य त्रुटियां और चेतावनी मेरे देव परिवेश के लिए सहायक हैं, लेकिन मैं अब उस विशेष को नहीं देखता हूं।


मेरे लिए परफेक्ट फिक्स, हालांकि मेरे पास एक ही था "ReactNative.createElement, पदावनत" चेतावनी है।
JD Angerhofer

2
आपको इसे अनदेखा करने के लिए कितना त्रुटि संदेश लिखना चाहिए?
सोइरेना

इस जवाब को अपडेट की जरूरत है। YelloBox अब प्रतिक्रिया-मूल का हिस्सा नहीं है।
हैदर ज़ीनेदिन 11

17

पीला बॉक्स जगह को निष्क्रिय करने के लिए

console.disableYellowBox = true; 

आपके आवेदन में कहीं भी आमतौर पर रूट फाइल में तो यह iOS और Android दोनों पर लागू होगा।

उदाहरण के लिए

export default class App extends React.Component {
     render() {
          console.disableYellowBox = true;
          return (<View></View>);
     }
}

11

किसी भी घटक के जीवनचक्र पद्धति के तहत आपकी app.js फ़ाइल में घटकडिमाउंट () में आपको इन दोनों को जोड़ना होगा, किसी को छोड़कर काम नहीं करेगा।

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

यह सच नहीं है, आपके प्रोजेक्ट में कुछ चल रहा है। एक पंक्ति कहती है "चेतावनियों की इस सूची को अनदेखा करें" (जो इसे करने का सबसे सटीक तरीका है), एक पंक्ति कहती है "सभी चेतावनियों को नज़रअंदाज़ करें" (जो इसे करने के लिए वास्तव में कुंद तरीका है)। मेरे पास केवल उदाहरण के लिए पहली पंक्ति है, और यह मेरी चेतावनियों को पूरी तरह से दबा देता है।
माइक हार्डी


9

अपनी index.js फ़ाइल में निम्न कोड जोड़ें

कंसोल .isableYellowBox = true;

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

    console.disableYellowBox = true;



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

7

यदि आप ऐप को तुरंत डेमो करने की कोशिश कर रहे हैं ।

यदि आप उन्हें किसी विशेष बिल्ड में छिपाना चाहते हैं क्योंकि आप एक डेमो या कुछ कर रहे हैं, तो आप अपनी Xcode स्कीम को एडिट बिल्ड बनाने के लिए एडिट कर सकते हैं और ये येलो चेतावनियां नहीं दिखेंगी। इसके अतिरिक्त, आपका ऐप बहुत तेज़ी से चलेगा।

आप निम्नलिखित करके अपने सिम्युलेटर और वास्तविक डिवाइस के लिए योजना को संपादित कर सकते हैं:

  1. XCode में प्रोजेक्ट में।
  2. Product> Scheme>Edit Scheme...
  3. बदले Build Configurationसे Debugकरने के लिए Release

1
स्वीकृत उत्तर होना चाहिए। में Release: कोई चेतावनी नहीं, और तेज़ ऐप!
cappie013

2
आपको कोई भी डिबग फीचर नहीं मिलता हैRelease
फिल एंड्रयूज

1
@PhilAndrews मैं सहमत हूँ! मुझे नहीं पता कि मैंने इस तरह से पोस्ट किया है, लेकिन पर्याप्त लोग हैं जो इसे उपयोगी पाते हैं कि मैं इसे छोड़ दूंगा। मैं किसी को एप्लिकेशन को प्रदर्शित करने की कोशिश कर रहा हूं और पीले चेतावनी से छुटकारा पाना चाहता हूं, जिस स्थिति में, यह जाने का सही तरीका है।
जोशुआ पिंटर

5

इस तरह आने वाले लोगों के लिए, कंसोल से लाल चेतावनी को निष्क्रिय करने की कोशिश करना, जो बिल्कुल बेकार सूचना देते हैं, जैसे कि feb / 17, आप इस कोड को कहीं और जोड़ सकते हैं

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

सभी को निष्क्रिय कर देता है console.error


1
धन्यवाद! मुझे यह भी एहसास नहीं हुआ कि मेरी कंसोल त्रुटि का कारण लाल स्क्रीन पॉप अप था। मैंने सोचा कि कुछ गलत था, कोशिश / कैच काम नहीं कर रहा था: ओ।
निक

5

कंसोल .isableYellowBox = true;

यह अनुप्रयोग स्तर के लिए काम करता है। इसे index.js फ़ाइल में कहीं भी रखें


4

console.disableYellowBox = true;अपने आवेदन में कहीं भी पीले बॉक्स को निष्क्रिय करने के लिए । आमतौर पर रूट फ़ाइल में यह iOS और Android दोनों पर लागू होगा।

अधिक विवरण प्राप्त करने के लिए कृपया आधिकारिक दस्तावेज देखें



1

कंसोल.इनगार्डयेलोबॉक्स = ['चेतावनी: प्रत्येक', 'चेतावनी: असफल'];


1

मैंने पाया कि जब मैंने उपर्युक्त विधियों का उपयोग करके विशिष्ट चेतावनियों (येलो-बॉक्स संदेश) को निष्क्रिय कर दिया था , तो चेतावनी मेरे मोबाइल डिवाइस पर अक्षम कर दी गई थी , लेकिन वे अभी भी मेरे कंसोल पर लॉग इन हो रहे थे, जो बहुत कष्टप्रद और विचलित करने वाला था।

अपने कंसोल में लॉग इन होने से चेतावनी को रोकने के लिए, आप बस ऑब्जेक्ट 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फ़ंक्शन से गुजरते हैं, भले ही वे कहाँ से उत्पन्न हुए हों। इस वजह से, सावधान रहें कि आप एक अत्यधिक उदार ब्लैकलिस्ट को निर्दिष्ट नहीं करते हैं जो अन्य सार्थक त्रुटियों को दबा देगा जो कि प्रतिक्रिया मूल के अलावा कहीं और से उत्पन्न हो सकती है।

इसके अलावा, मेरा मानना ​​है कि रिएक्ट नेटिव console.errorत्रुटियों (रेड-बॉक्स संदेशों) को लॉग करने के लिए विधि का उपयोग करता है , इसलिए मैं मान रहा हूं कि इस तकनीक का उपयोग विशिष्ट त्रुटियों को भी फ़िल्टर करने के लिए किया जा सकता है।


0

अपनी AppDelegate.m फाइल में आप इस लाइन को बदल सकते हैं:

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

और की जगह dev=trueद्वारा dev=falseअंत में।


0

संबंधित: रिएक्टिव नेटिव लाइब्रेरी से Xcode चेतावनियों को दबाएं

(लेकिन अपने स्वयं के कोड के लिए नहीं)

क्यों: जब एक नया RN- ऐप इनिशियलाइज़ किया जाता है, तो Xcode प्रोजेक्ट में 100 चेतावनियाँ शामिल होती हैं, जो शोर को विचलित करती हैं (लेकिन शायद हानिरहित अन्यथा)

समाधान: सेट प्रासंगिक लक्ष्यों के लिए बिल्ड सेटिंग्स के तहत हाँ करने के लिए सभी चेतावनियों को बाधित

यहां छवि विवरण दर्ज करें

फ्रेमवर्क से Xcode में चेतावनी को अक्षम करें

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


भी; तर्क त्रुटियों के लिए; "-Xanalyzer -analyzer-disable-all-check" देखें
लियोनार्ड पाउली

मूल प्रश्न इन-ऐप चेतावनी (यानी पीला बॉक्स) के बारे में था, मुझे यह सवाल तब मिला जब मैं Xcode प्रोजेक्ट चेतावनियों को साफ करने की कोशिश कर रहा था। नीचता क्यों? देख meta.stackoverflow.com/questions/299352/...
लियोनार्ड पाउली

0

मैं हमारी टीम द्वारा एक छोटे उपकरण देव की सिफारिश करता हूं, यह फ्लोट आइकन में सभी चेतावनी और त्रुटि एकत्र करता है। तुलना करें console.disableYellowBox = true;, आप अभी भी देख सकते हैं कि चेतावनी या त्रुटि कहां है लेकिन यह आपको परेशान नहीं करता है। यहां छवि विवरण दर्ज करें WT-Console Github Repo: https://github.com/WeBankFinTech/wt-console

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.