React Native iOSシミュレーターで警告を非表示にするにはどうすればよいですか?


106

React Nativeをアップグレードしたところ、iOSシミュレーターにたくさんの警告が出ました。それらを修正する以外に、これらの警告を非表示にして、下にあるものを確認するにはどうすればよいですか?

回答:


207

React Native Documentationによれば、次のように設定disableYellowBoxすることで警告メッセージを隠すことができますtrue

console.disableYellowBox = true;

3
これは私にとってはうまくいきましたが、console.ignoredYellowBox = [...];
sdfsdf

6
ありがとうございました!これが選択された答えです。
Sreejith Ramakrishnan 2017

1
すみませんが、どこにconsole.disableYellowBox = trueを追加しますか?
ミシェルアルテタ2017

2
@マイク、黄色のボックスを無効にする場合のスクリプト内の任意の場所。
Moussawi7 2017

2
配置するのに適した場所は、RootContainerコンポーネントのコンストラクターです。
Fernando Vieira

102

特定の警告(最新かつ最高のRNバージョンへのアップグレード後に無期限に表示される)を選択的に非表示にするより良い方法は、プロジェクトの一般的なJSファイルでconsole.ignoredYellowBoxを設定することです。たとえば、今日私のプロジェクトをRN 0.25.1にアップグレードした後、私はたくさん見ていました...

警告:ReactNative.createElementは非推奨です...

React-Nativeからの有用な警告とエラーメッセージを引き続き表示したいのですが、RN 0.25の重大な変更がまだ組み込まれていない外部npmライブラリからのものであるため、この特定の警告を押しつぶしたいと思います。だから私の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 is deprecated"という警告が出ましたが、私にとっては完璧な修正です。
JD Angerhofer 2016年

2
それを無視するためにどのくらいのエラーメッセージを書くべきですか?
Soorena

この回答は更新が必要です。YelloBoxは、react-nativeの一部ではなくなりました。
ハイダーZeineddine

17

黄色いボックスの場所を無効にするには

console.disableYellowBox = true; 

アプリケーションのどこにでも。通常はルートファイルにあるため、iOSとAndroidの両方に適用されます。

例えば

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

11

コンポーネントのライフサイクルメソッドの下のapp.jsファイルで、componentDidmount()のように、これらの両方を追加する必要があります。

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

それは真実ではありません、あなたのプロジェクトで何かが起こっています。1行目は「この警告リストを無視する」(これは最も正確な方法です)、「すべての警告を無視する」(これは本当に率直な方法です)です。たとえば、最初の行しかなく、警告が完全に抑制されます。
マイクハーディ


9

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);

7

アプリをすばやくデモしようとしている場合。

デモなどを行っているために特定のビルドで非表示にしたい場合は、Xcodeスキームを編集してリリースビルドにすると、黄色の警告が表示されなくなります。さらに、アプリの実行速度が大幅に向上します。

次のようにして、シミュレータと実際のデバイスのスキームを編集できます。

  1. XCodeのプロジェクト内。
  2. Product> Scheme>Edit Scheme...
  3. Build ConfigurationからDebugに変更しReleaseます。

1
受け入れられる答えでなければなりません。でRelease:警告なし、そしてより速いアプリ!
cappie013 2017

2
デバッグ機能はありませんRelease
Phil Andrews

1
@PhilAndrews同意する!いつこのように投稿したかはわかりませんが、役に立つと思う人がたくさんいるので、そのままにしておきます。私は誰かにアプリをデモしてみて、黄色の警告を取り除きたかったのですが、その場合、これは正しい方法です。
ジョシュアピンター

5

このように来てコンソールから赤い警告を無効にしようとする人にとっては、2月17日以降、まったく役に立たない情報を提供するため、このコード行をどこかに追加できます

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

すべて無効にします console.error


1
ありがとう!私のコンソールエラーが、赤い画面が表示された理由だとは思いもしませんでした。try / catchが機能しないことに問題があると思いました:o。
Nick

5

console.disableYellowBox = true;

これはアプリケーションレベルで機能しましたindex.jsファイルのどこかに配置します


4

黄色のボックスを無効にするにはconsole.disableYellowBox = true;、アプリケーションの任意の場所に配置します。通常はルートファイルにあるため、iOSとAndroidの両方に適用されます。

詳細については、公式ドキュメントを確認してください




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発信元に関係なく、関数を通過するすべてのメッセージをフィルタリングすることに注意してください。このため、React Native以外の場所から発生する可能性のある他の意味のあるエラーを抑制する過度に寛大なブラックリストを指定しないように注意してください。

また、React Nativeはこのconsole.errorメソッドを使用してエラー(赤いボックスのメッセージ)をログに記録すると考えているので、この手法を使用して特定のエラーを除外することもできると想定しています。


0

あなたにAppDelegate.mのファイルあなたは、この行を変更することができます。

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

そして、置き換えるdev=trueことでdev=false終わり。


0

関連:React NativeライブラリからのXcode警告を抑制する

(あなた自身のコードではありません)

理由:新しいRNアプリを初期化するとき、Xcodeプロジェクトには10​​0に近い警告が含まれており、ノイズが気になります(ただし、他の点ではおそらく無害です)。

解決策:設定されたすべての警告を抑制するイエスのもとビルド設定、関連するターゲットのため。

ここに画像の説明を入力してください

フレームワークからXcodeの警告を無効にする

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


また; 論理エラーの場合; 「-Xanalyzer -analyzer-disable-all-checks」を参照してください
Leonard Pauli

元の質問はアプリ内警告(黄色のボックス)に関するものでしたが、Xcodeプロジェクトの警告をクリーンアップしようとしたときにこの質問が見つかりました。なぜ反対票を投じるのですか?meta.stackoverflow.com/questions/299352/…を
レナードパウリ

0

私はチームによる小さなツールの開発をお勧めします。すべての警告とエラーをフロートアイコンに収集します。と比較してconsole.disableYellowBox = true;も、警告またはエラーの場所はわかりますが、邪魔にはなりません。 ここに画像の説明を入力してください WT-Console Github Repo:https : //github.com/WeBankFinTech/wt-console

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.