Làm cách nào để bạn ẩn các cảnh báo trong trình mô phỏng React Native iOS?


106

Tôi vừa nâng cấp React Native của mình và bây giờ trình mô phỏng iOS có một loạt cảnh báo. Bên cạnh việc sửa chúng, tôi làm cách nào để ẩn những cảnh báo này để tôi có thể xem những gì bên dưới?

Câu trả lời:


207

Theo Tài liệu gốc của React , bạn có thể ẩn các thông báo cảnh báo bằng cách đặt disableYellowBoxthành truenhư sau:

console.disableYellowBox = true;

3
điều này hiệu quả với tôi, nhưng không phải là các câu trả lời khác cho biết console.ignoredYellowBox = [...];
sdfsdf

6
Cảm ơn bạn! Đây sẽ là câu trả lời được chọn.
Sreejith Ramakrishnan

1
Xin lỗi, nhưng bạn thêm console.disableYellowBox = true vào đâu?
Michel Arteta

2
@Mike, bất kỳ vị trí nào trong tập lệnh của bạn, khi bạn muốn tắt hộp màu vàng.
Moussawi7

2
Một nơi tốt để đặt nó là trên phương thức khởi tạo của thành phần RootContainer!
Fernando Vieira

102

Một cách tốt hơn để ẩn có chọn lọc các cảnh báo nhất định (hiển thị vô thời hạn sau khi nâng cấp lên phiên bản RN mới nhất và tốt nhất) là đặt console.ignoredYellowBox trong một tệp JS chung trong dự án của bạn. Ví dụ: sau khi nâng cấp dự án của tôi hôm nay lên RN 0,25,1, tôi đã thấy rất nhiều ...

Cảnh báo: ReactNative.createElement không được dùng nữa ...

Tôi vẫn muốn có thể xem các cảnh báo hữu ích và thông báo lỗi từ React-Native, nhưng tôi muốn loại bỏ cảnh báo cụ thể này vì nó đến từ thư viện npm bên ngoài chưa tích hợp các thay đổi đột phá trong RN 0,25. Vì vậy, trong App.js của tôi, tôi thêm dòng này ...

// 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'];

Bằng cách này, tôi vẫn gặp các lỗi khác và cảnh báo hữu ích cho môi trường nhà phát triển của tôi, nhưng tôi không còn thấy lỗi cụ thể đó nữa.


Bản sửa lỗi hoàn hảo cho tôi, mặc dù tôi có cùng cảnh báo "ReactNative.createElement không được dùng nữa".
JD Angerhofer

2
Bạn nên viết bao nhiêu thông báo lỗi để bỏ qua nó?
Soorena

Câu trả lời này cần được cập nhật. YelloBox không còn là một phần của react-native nữa.
Haidar Zeineddine

17

Để tắt vị trí hộp màu vàng

console.disableYellowBox = true; 

bất cứ nơi nào trong ứng dụng của bạn. Điển hình là trong tệp gốc vì vậy nó sẽ áp dụng cho cả iOS và Android.

Ví dụ

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

11

Trong tệp app.js của bạn dưới bất kỳ phương thức vòng đời của thành phần nào. Giống như trong componentDidmount (), bạn phải thêm cả hai điều này, loại trừ bất kỳ thứ nào sẽ không hoạt động.

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

Điều đó không đúng, có điều gì đó đang diễn ra trong dự án của bạn. Một dòng cho biết "bỏ qua danh sách cảnh báo này" (đó là cách chính xác nhất để làm điều đó), một dòng cho biết "bỏ qua tất cả các cảnh báo" (đó là một cách thực sự thẳng thừng). Ví dụ, tôi chỉ có dòng đầu tiên và nó ngăn chặn các cảnh báo của tôi một cách hoàn hảo.
Mike Hardy

10

add this line in your app main screen.

console.disableYellowBox = true;


9

Thêm đoạn mã sau vào bạn index.js tập tin

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

Nếu bạn đang cố gắng nhanh chóng demo ứng dụng.

Nếu bạn muốn ẩn chúng trong một bản dựng cụ thể vì bạn đang làm bản demo hoặc một cái gì đó, bạn có thể chỉnh sửa lược đồ Xcode của mình để biến nó thành bản dựng phát hành và những cảnh báo màu vàng này sẽ không hiển thị. Ngoài ra, ứng dụng của bạn sẽ chạy nhanh hơn nhiều.

Bạn có thể chỉnh sửa Lược đồ cho trình mô phỏng và thiết bị thực của mình bằng cách làm như sau:

  1. Trong dự án trong XCode.
  2. Product> Scheme>Edit Scheme...
  3. Thay đổi Build Configurationtừ Debugsang Release.

1
Nên là câu trả lời được chấp nhận. Trong Release: không có cảnh báo và ứng dụng nhanh hơn!
cappie013

2
Bạn không nhận được bất kỳ tính năng debug trongRelease
Phil Andrews

1
@PhilAndrews Tôi đồng ý! Tôi không biết tôi đã đăng lại theo cách này khi nào nhưng có đủ người thấy nó hữu ích và tôi sẽ bỏ nó. Tôi hẳn đã cố gắng demo ứng dụng cho ai đó và muốn loại bỏ các cảnh báo màu vàng, trong trường hợp đó, đây là cách phù hợp để đi.
Joshua Pinter

5

Đối với những người đến theo cách này đang cố gắng vô hiệu hóa cảnh báo màu đỏ từ bảng điều khiển, cung cấp thông tin hoàn toàn vô ích, kể từ feb / 17, bạn có thể thêm dòng mã này vào đâu đó

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

Tắt tất cả console.error


1
Cảm ơn! Tôi thậm chí không nhận ra rằng lỗi bảng điều khiển của mình là lý do khiến màn hình đỏ xuất hiện. Tôi nghĩ có gì đó không ổn khi thử / bắt không hoạt động: o.
Nick

5

console.disableYellowBox = true;

điều này hoạt động cho cấp ứng dụng Đặt nó ở bất kỳ đâu trong tệp index.js


4

Để tắt hộp màu vàng, hãy đặt console.disableYellowBox = true;bất kỳ vị trí nào trong ứng dụng của bạn. Điển hình là trong tệp gốc vì vậy nó sẽ áp dụng cho cả iOS và Android.

Để biết thêm chi tiết, vui lòng kiểm tra tài liệu chính thức



1

console.ignoredYellowBox = ['Cảnh báo: Từng', 'Cảnh báo: Không thành công'];


1

Tôi thấy rằng ngay cả khi tôi tắt các cảnh báo cụ thể (thông báo hộp màu vàng) bằng các phương pháp được đề cập ở trên, các cảnh báo đã bị tắt trên thiết bị di động của tôi, nhưng chúng vẫn được ghi vào bảng điều khiển của tôi, điều này rất khó chịu và mất tập trung.

Để ngăn cảnh báo được ghi vào bảng điều khiển của bạn, bạn có thể chỉ cần ghi đè warnphương thức lên consoleđối tượng.

// This will prevent all warnings from being logged
console.warn = () => {};

Thậm chí chỉ có thể tắt các cảnh báo cụ thể bằng cách kiểm tra thông báo được cung cấp:

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

Nếu bạn không thể (hoặc không muốn) sử dụng Biểu thức chính quy để kiểm tra chuỗi, indexOfphương pháp cũng sẽ hoạt động như sau:

// 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;
}

Lưu ý rằng kỹ thuật này sẽ lọc tất cả các thông báo đi qua warnhàm bất kể chúng bắt nguồn từ đâu. Do đó, hãy cẩn thận rằng bạn không chỉ định một danh sách đen quá hào phóng sẽ loại bỏ các lỗi có ý nghĩa khác có thể bắt nguồn từ một nơi nào đó không phải React Native.

Ngoài ra, tôi tin rằng React Native sử dụng console.errorphương pháp ghi lại lỗi (thông báo hộp đỏ), vì vậy tôi giả định rằng kỹ thuật này cũng có thể được sử dụng để lọc ra các lỗi cụ thể.


0

Trong tệp AppDelegate.m của bạn, bạn có thể thay đổi dòng này:

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

và thay thế dev=truebằng dev=falseở cuối.


0

Liên quan: Loại bỏ cảnh báo Xcode từ thư viện React Native

(nhưng không phải cho mã của riêng bạn)

tại sao: khi khởi chạy một ứng dụng RN mới, dự án Xcode chứa gần 100 cảnh báo gây mất tập trung (nhưng có thể là vô hại nếu không)

giải pháp: đặt ngăn chặn tất cả các cảnh báo thành trong Cài đặt xây dựng cho các mục tiêu liên quan.

nhập mô tả hình ảnh ở đây

Tắt cảnh báo trong Xcode từ các khuôn khổ

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


cũng thế; đối với các lỗi logic; xem "-Xanalyzer -analyzer-vô hiệu hóa-tất cả-kiểm tra"
Leonard Pauli

Câu hỏi ban đầu là về cảnh báo trong ứng dụng (tức là hộp màu vàng), tôi đã tìm thấy câu hỏi này khi cố gắng xóa các cảnh báo của dự án Xcode. Tại sao lại phản đối? xem meta.stackoverflow.com/questions/299352/…
Leonard Pauli,

0

Tôi đề xuất một nhà phát triển công cụ nhỏ của nhóm chúng tôi, Nó thu thập tất cả các cảnh báo và lỗi vào biểu tượng phao. So sánh với console.disableYellowBox = true;, bạn vẫn có thể thấy đâu là cảnh báo hoặc lỗi nhưng nó không làm phiền bạn. nhập mô tả hình ảnh ở đây WT-Console Github Repo: https://github.com/WeBankFinTech/wt-console

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.