programing

리액트 네이티브 iOS 시뮬레이터에서 경고를 숨기는 방법은 무엇입니까?

telecom 2023. 6. 9. 21:45
반응형

리액트 네이티브 iOS 시뮬레이터에서 경고를 숨기는 방법은 무엇입니까?

방금 리액트 네이티브를 업그레이드했는데 iOS 시뮬레이터에 많은 경고가 표시됩니다.이러한 경고를 수정하는 것 외에, 아래에 무엇이 있는지 볼 수 있도록 어떻게 숨길 수 있습니까?

React Native Documentation에 따르면 다음을 설정하여 경고 메시지를 숨길 수 있습니다.disableYellowBoxtrue다음과 같이:

console.disableYellowBox = true;

업데이트: 기본 0.63+ 대응

console.disableYellowBox가 제거되어 이제 다음을 사용할 수 있습니다.

import { LogBox } from 'react-native';
LogBox.ignoreLogs(['Warning: ...']); // Ignore log notification by message
LogBox.ignoreAllLogs();//Ignore all log notifications

모든 로그 알림을 무시하다

특정 경고(가장 최신의 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'];

이렇게 하면 개발 환경에 도움이 되는 다른 오류와 경고가 표시되지만 더 이상 특정 오류가 표시되지 않습니다.

노란색 상자 플레이스를 비활성화하려면

console.disableYellowBox = true; 

응용프로그램의 모든 위치에 있습니다.일반적으로 루트 파일에 있으므로 iOS와 Android 모두에 적용됩니다.

예를들면

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

add this line in your app main screen.

console.사용 안 함YellowBox = true;

예: - in index.js 파일

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

AppRegistry.registerComponent(appName, () => App);
console.disableYellowBox = true;

구성 요소의 라이프사이클 방법에 따라 app.js 파일에 있습니다.구성 요소 Didmount()에서와 같이 작동하지 않는 것을 제외하고 이 두 가지를 모두 추가해야 합니다.

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

아래 라인에서 작업한 저의 경우 현재 리액티브 0.64를 사용하고 있습니다.

  import { LogBox } from 'react-native';

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

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

억제할 경고를 정확히 지정하기 위해 경고를 추가할 때는 이와 같이 경고 메시지를 정확하게 추가해야 합니다(랜덤 예제).

LogBox.ignoreLogs([
  'Warning: Failed prop type: Invalid props.style key `tintColor` supplied to `Text`.',
]);

은 뒤 가 작 대 따 표 옴 용 사 은 신 로 기 ▁usingtintColor또는Text예를 들어, 가 작동하지 않습니다.

index.js 파일에 다음 코드를 추가합니다.

console.사용 안 함YellowBox = 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 체계를 편집하여 릴리스 빌드로 만들 수 있으며 이러한 노란색 경고는 표시되지 않습니다.또한 앱이 훨씬 빠르게 실행됩니다.

다음을 수행하여 시뮬레이터 및 실제 장치의 Scheme을 편집할 수 있습니다.

  1. XCode의 프로젝트에 있습니다.
  2. Product>Scheme>Edit Scheme...
  3. Build ConfigurationDebugRelease.

콘솔에서 빨간색 경고를 비활성화하려는 사람들은 2월 17일 현재 이 코드 라인을 어딘가에 추가할 수 있습니다.

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

두모사안함을 합니다.console.error

RN > = 0.62

import {LogBox} from 'react-native'

가져오기 아래에 추가

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

'...' 대신 숨기려는 경고를 작성할 수 있습니다.예를 들어, VirtualizedLists는 절대로 ...이어서는 안 된다는 경고를 받았습니다. 그러면 다음과 같이 쓸 수 있습니다.

LogBox.ignoreLogs(['VirtualizedLists']);

다른 오류를 추가하려면 다음과 같이 쓸 수 있습니다.

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

console.사용 안 함YellowBox = true;

이것은 애플리케이션 수준에서 작동했습니다. index.js 파일의 아무 곳에나 저장합니다.

위에서 언급한 방법을 사용하여 특정 경고(노란색 상자 메시지)를 비활성화했을 때도 모바일 장치에서 경고가 비활성화되었지만 여전히 콘솔에 기록되고 있어 매우 성가시고 산만했습니다.

경고가 콘솔에 기록되는 것을 방지하기 위해 단순히 다음을 재정의할 수 있습니다.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);
};

을 테스트할 수 ), " " " 식을사또문여테을자수없스할경열트않는우는원용지하하는정규또,▁if경않▁the)우는(",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오류(레드박스 메시지)를 기록하는 방법이므로 이 기술을 사용하여 특정 오류를 필터링할 수도 있다고 생각합니다.

앱에 추가.js

React Native에서 LogBox 가져오기

'react-native'에서 {LogBox} 가져오기;

그리고 나서..

LogBox.ignore모든 로그()

할 수 없도록 합니다.console.disableYellowBox = true;응용프로그램의 모든 위치에 있습니다.일반적으로 루트 파일에 있으므로 iOS와 Android 모두에 적용됩니다.

자세한 내용은 공식 문서를 확인하십시오.

console.사용 안 함YellowBox = true;

console.ignoredYellowBox = ['경고:각', '경고: 실패'];

추가한 후에는 정상적으로 작동합니다.

//app.js

import { LogBox } from 'react-native'; 

 useEffect(() => {
    LogBox.ignoreAllLogs(true)
 }, [])

https://cisco native.dev/dev/2020/07/06/version-0.63

AppDelegate.m 파일에서 다음 행을 변경할 수 있습니다.

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

및 대체dev=true타고dev=false마지막에

관련:React Native 라이브러리에서 Xcode 경고 표시 안 함

(단, 자신의 코드는 아님)

이유: 새로운 RN 앱을 초기화할 때 Xcode 프로젝트에는 주의를 산만하게 하는 100개에 가까운 경고가 포함되어 있습니다(그러나 그렇지 않으면 무해할 수도 있습니다).

해결 방법: 관련 대상에 대한 빌드 설정에서 모든 경고 금지를 로 설정합니다.

여기에 이미지 설명 입력

프레임워크에서 Xcode의 경고 사용 안 함

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

콘솔을 놓는 것을 좋아합니다. 사용 안 함YellowBox = 파일 루트에 대해 App과 같이 true입니다.하지만 이것은 제가 개발 단계에 있을 때입니다.

console.error = (오류) => error.dll; // in index.js

rn 0.66이 작동하지 않는 경우도 있습니다. 특히 가상화된 목록의 경우 일반 스크롤 보기 내에 중첩해서는 안 됩니다.

그리고 빨간색 경고도 무시합니다.

언급URL : https://stackoverflow.com/questions/35309385/how-do-you-hide-the-warnings-in-react-native-ios-simulator

반응형