กำจัดคำเตือน“ Remote debugger อยู่ในแท็บพื้นหลัง” ใน React Native


89

ฉันได้เริ่มโครงการ React Native ใหม่แล้วและได้รับคำเตือนต่อไปนี้:

ตัวแก้ไขจุดบกพร่องระยะไกลอยู่ในแท็บพื้นหลังซึ่งอาจทำให้แอปทำงานช้า แก้ไขปัญหานี้โดยการวางแท็บไว้ข้างหน้า (หรือเปิดในหน้าต่างแยกต่างหาก)

มันค่อนข้างน่ารำคาญฉันเลยอยากรู้ว่าจะกำจัดมันได้อย่างไร? ฉันใช้งานดีบักเกอร์ใน Chrome และย้ายไปยังหน้าต่างแยกต่างหาก แต่ก็ไม่ได้ช่วยอะไร


สำหรับคนอื่น ๆ ที่อ่านสิ่งนี้ฉันคิดว่าสิ่งที่คุณต้องการคือดีบักเกอร์ที่เร็วกว่าแทนที่จะเพิกเฉยต่อคำเตือนเหล่านี้ คำตอบด้านล่างโดย @varunvs เพื่อใช้ react-native-debugger จะลบคำเตือนและลดเวลาในการส่งออกอุปกรณ์ของคุณ
Vineeth Pradhan

3
คำตอบที่ถูกต้อง ( ด้านล่าง ) คือการทำเครื่องหมายในช่อง "รักษาลำดับความสำคัญ" ในหน้าดีบักเกอร์
orome

ตั้งแต่ react-native v0.63.0 ใช้LogBox.ignoreLogs(['Remote debugger']);จากreact-native
Anton Novik

คำตอบ:


150

หากคุณมีช่องทำเครื่องหมายรักษาลำดับความสำคัญในหน้าต่างดีบักเกอร์ให้ลองเปิดใช้งานก่อนที่คุณจะข้ามไปที่วิธีแก้ไขปัญหาด้านล่าง

หากต้องการกำจัดคำเตือนในโปรเจ็กต์ทั้งหมดของคุณให้เพิ่มสิ่งต่อไปนี้ลงในไฟล์ Javascript ที่อยู่นอกสุดของคุณ(ส่วนใหญ่เป็นเวลาindex.jsสำหรับ React Native)

สำหรับปฏิกิริยาพื้นเมือง v0.63+:

ใช้LogBox: https://reactnative.dev/docs/debugging#logbox

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

สำหรับปฏิกิริยาพื้นเมือง v0.57 - v0.62:

import { YellowBox } from 'react-native';
YellowBox.ignoreWarnings(['Remote debugger']);

อ้างอิงจากเอกสาร React Native อย่างเป็นทางการ:

https://facebook.github.io/react-native/docs/debugging.html

react-native v0.56 หรือต่ำกว่า:

เพิ่มสิ่งต่อไปนี้ก่อนในรหัสของคุณ:

console.ignoredYellowBox = ['Remote debugger'];

ง่ายง่ายและเฉพาะเจาะจงสำหรับข้อผิดพลาดนั้น ใช้ได้ผลสำหรับฉัน สามารถใช้แทนข้อความที่คุณต้องการได้


เพิ่มสิ่งนี้ก่อนคำสั่ง AppRegistry.registerComponent ของฉันและมันใช้งานได้! ขอบคุณ
İlterKağanÖcal

1
index.jsฉันใส่รหัสนี้ในระดับบนสุดของฉัน ใช้งานได้เหมือนมีเสน่ห์ if (__DEV__) { console.ignoredYellowBox = ['Remote debugger']; }
Mike S.

@ ไมค์ส. [eslint] '__DEV__' is not defined. (no-undef)ผมได้รับการแจ้งเตือน คุณได้รับมันด้วยหรือไม่?
anticafe

@anticafe ไม่ฉันไม่ได้รับคำเตือนใด ๆ ดังนั้นฉันไม่แน่ใจว่าปัญหาจะเป็นอย่างไร
Mike S.

สวัสดีฉันกำลังใช้YellowBox.ignoreWarnings(['Remote debugger', 'Require cycles']);แต่คำเตือนทั้งสองยังคงปรากฏอยู่ในหน้าต่างคอนโซลของฉัน ฉันใช้ RN เวอร์ชัน 0.61.4 โปรดช่วย
Archana Sharma

41

วิธีนี้ใช้ได้ผลสำหรับฉัน

เปิด / ย้ายhttp: // localhost: 8081 / debugger-ui (เส้นทางเริ่มต้นสำหรับการดีบักระยะไกล) บนหน้าต่างแยก

บางทีอาจช่วยได้ :)


5
เพียงแค่ย้ายแท็บออกจากกลุ่ม 37 แท็บปกติไปไว้ในหน้าต่างของตัวเอง ขอบคุณ
jakeforaker

ใช่มันได้ผล แต่ใครก็ได้บอกฉันทีว่าทำไม?
Ranjan

คิดว่านี่เป็นคำตอบที่ถูกต้องตามที่แนะนำในข้อความเตือน 'Remote debugger อยู่ในแท็บพื้นหลังซึ่งอาจทำให้แอปทำงานช้า แก้ไขปัญหานี้โดยการวางแท็บไว้ข้างหน้า (หรือเปิดในหน้าต่างแยกต่างหาก) '
UX Andre

24

คุณสามารถใช้ React Native Debugger ได้ที่https://github.com/jhen0409/react-native-debuggerซึ่งเป็นแอปแบบสแตนด์อโลนสำหรับการดีบักแอป React Native ระหว่างการพัฒนา


3
ขอบคุณฉันจะลองใช้อย่างแน่นอน แต่มันไม่ใช่สิ่งที่ฉันต้องการเป็นคำตอบเพราะมันไม่สามารถแก้ไขคำเตือนได้ ฉันไม่ได้รับคำเตือนเกี่ยวกับแอป RN อื่น ๆ บนคอมพิวเตอร์เครื่องเดียวกันแปลก ๆ
mxmtsk

1
ฉันมีปัญหาที่คล้ายกัน แต่การใช้ React Native debugger แก้ไขได้
varunvs

ขอบคุณฉันใช้วิธีแก้ปัญหานี้เนื่องจากการเก็บดีบักเกอร์ไว้ในหน้าต่างของตัวเองไม่ได้ลบคำเตือนสำหรับฉันตลอดเวลา
mxmtsk

2
การติดตั้งเครื่องมืออื่นเพียงเพื่อลบคำเตือนไม่ใช่วิธีแก้ปัญหาที่ดีที่สุดและเครื่องมืออื่นนั้นมีปัญหาในตัวเอง คำตอบที่ถูกต้องคือคำตอบของ kjonsson ด้านล่าง -console.ignoredYellowBox = ['Remote debugger'];
laurent

1
@ this.lau_ นั่นไม่ใช่แค่ซ่อนคำเตือนและไม่แก้ไขปัญหาจริงหรือ? ฉันเชื่อว่าปัญหาที่เรากำลังพยายามแก้ไขคือการแก้ไขประสิทธิภาพของแอปที่ช้าในขณะที่แก้ไขข้อบกพร่อง การบังคับซ่อนคำเตือนจะไม่สามารถแก้ไขได้
varunvs


6

เป็นเพราะมีการเปิดแท็บจำนวนมากในเบราว์เซอร์ด้วยแท็บ React Native Remote Debugger UIตอบสนองแท็บระยะไกลพื้นเมืองดีบักฉันก็ประสบปัญหาเดียวกัน

ในการเอาชนะข้อความเตือนนี้คุณสามารถใช้วิธีใดวิธีหนึ่งดังต่อไปนี้:

  • เปิดแท็บไม่ระบุตัวตนแล้ววางhttp: // localhost: 8081 / ดีบัก-UIบนแถบที่อยู่และกดENTER สุดท้ายโหลดแอป(Command + R)

  • ปิดแท็บทั้งหมดในเบราว์เซอร์ ให้เพียง 1 แท็บเปิดแล้วกดhttp: // locahost: 8081 / ดีบัก-UIแล้วโหลดแอป(Command + R)


6

ดังกล่าวโดย @jakeforaker ในหนึ่งในความคิดเห็น คำเตือนหายไปโดยเพียงแค่เปิดตัวดีบักระยะไกลในหน้าต่างแยกต่างหากแทนที่จะเป็นแท็บในหน้าต่างที่มีอยู่ของเบราว์เซอร์ของคุณ (คุณต้องโหลดโปรแกรมจำลองของคุณซ้ำ)

เนื่องจากคำเตือนกำลังบอกว่าให้เก็บดีบักเกอร์ระยะไกลไว้ในหน้าต่างเดียวกับแท็บอื่น ๆ

อาจทำให้แอปทำงานช้า

ดังนั้นฉันคิดว่าการระงับคำเตือนตามที่ @kjonsson กล่าวไว้: - console.ignoredYellowBox = ['Remote debugger'];ดูเหมือนจะไม่ใช่ทางออกที่ดีที่สุด


5

ปัญหานี้ได้รับการแก้ไขแล้วเมื่อฉันปิดหน้าต่าง Chrome ที่เปิดอยู่ทั้งหมดและเริ่มการลบดีบักอีกครั้ง ฉันเคยเปิดหน้าต่าง Chrome มาก่อนดังนั้นดูเหมือนว่าการเปิดหน้าต่างเหล่านี้จะทำให้ประสิทธิภาพการทำงานลดลง


5

เนื่องจากข้อตกลงนี้ในเดือนมีนาคม 2017 คุณสามารถเปิดใช้งานช่องทำเครื่องหมายรักษาลำดับความสำคัญได้ เมื่อเปิดใช้งานแล้วเล่น.wavไฟล์ที่เข้ารหัส base64 แบบเงียบ ๆเพื่อป้องกันไม่ให้แท็บเบราว์เซอร์ของดีบักเกอร์เข้าสู่โหมดพลังงานต่ำซึ่งอาจส่งผลต่อประสิทธิภาพของ websocket วิธีนี้จะป้องกันคำเตือนที่คุณอธิบายได้อย่างมีประสิทธิภาพ


4

ฉันคิดว่าคำตอบที่ยอมรับนั้นไม่ถูกต้องอีกต่อไป (อย่างน้อยสำหรับ React Native v0.57 +)

รหัสที่ถูกต้องคือ:

import { YellowBox } from 'react-native';
YellowBox.ignoreWarnings(['Remote debugger']);

อ้างอิงจากเอกสาร React Native อย่างเป็นทางการ:

https://facebook.github.io/react-native/docs/debugging.html


2

ฉันใช้ Macbook ฉันแก้ไขปัญหานี้โดยนำหน้าต่าง Debugger มาไว้บนเดสก์ท็อปหลักแทนที่จะใช้ในเดสก์ท็อปแยกต่างหากซึ่งคิดว่าอยู่ใน "พื้นหลัง"

ใส่คำอธิบายภาพที่นี่


0

ฉันมีปัญหาเดียวกันปรากฏขึ้นเมื่อวานนี้ Googling นำไปสู่โพสต์ Stack Overflowนี้ ในคำตอบหนึ่ง (โดย adriansprod) เขาแนะนำ:

Chrome debugger in it's own window fixes. But annoying problem

มีแนวโน้มว่าโปรแกรมแก้ไขข้อบกพร่อง React Native ของคุณไม่ได้อยู่ในหน้าต่างเบราว์เซอร์ Chrome ของตัวเอง แต่อยู่ในแท็บเบราว์เซอร์ Chrome การดึงมันออกมาเป็นหน้าต่างของตัวเองตามที่ adriansprod แนะนำแก้ไขให้ฉัน


0

ข้อความแสดงข้อผิดพลาด (น่ารำคาญมาก) ได้รับการจัดการโดย debuggerWorker.jsซึ่งน่าเศร้าที่ไม่มีตัวเลือกการกำหนดค่าใด ๆ เพื่อปิดข้อความ ดังนั้นในขณะนี้ไม่มีวิธีใดที่คุณสามารถกำหนดค่าแอปพลิเคชันของคุณเพื่อปิดใช้งานข้อความได้

รหัสที่เกี่ยวข้องระบุไว้ด้านล่าง ( ใช้ใบอนุญาตเดิม ):

var visibilityState;
var showVisibilityWarning = (function() {
  var hasWarned = false;
  return function() {
    // Wait until `YellowBox` gets initialized before displaying the warning.
    if (hasWarned || console.warn.toString().includes('[native code]')) {
      return;
    }
    hasWarned = true;
    console.warn(
      'Remote debugger is in a background tab which may cause apps to ' +
      'perform slowly. Fix this by foregrounding the tab (or opening it in ' +
      'a separate window).'
    );
  };
})();

อย่างที่คุณเห็นไม่มีการใช้ตัวเลือกการกำหนดค่าทุกอย่างจะถูกกำหนดขอบเขตไว้ในเครื่อง (ดูลิงก์ repo ด้านบนสำหรับรายละเอียดเพิ่มเติม)


0

ฉันเคยเผชิญกับปัญหาเดียวกันเมื่อประมาณหนึ่งสัปดาห์ที่แล้วและในที่สุดฉันก็พบวิธีแก้ปัญหาที่ใช้งานได้ดีสำหรับฉัน

เรียกว่า reactotron คุณสามารถค้นหาได้ที่นี่ - https://github.com/reactotron/reactotronและคุณสามารถใช้เพื่อ:
* ดูสถานะแอปพลิเคชันของคุณ
* แสดงคำขอ API และการตอบกลับ
* ทำการวัดประสิทธิภาพอย่างรวดเร็ว
* สมัครสมาชิกบางส่วนของคุณ สถานะแอปพลิเคชัน
* แสดงข้อความคล้ายกับ console.log
* ติดตามข้อผิดพลาดทั่วโลกด้วยสแต็กเทรซที่แมปที่มารวมถึงสแต็กเทรซ saga!
* ส่งการกระทำเช่นการทดลองควบคุมจิตใจที่ดำเนินการโดยรัฐบาล
* hot swap สถานะของแอปของคุณ
* ติดตาม sagas ของคุณ

ฉันหวังว่าโพสต์ของฉันจะเป็นประโยชน์และคุณจะไม่ต้องเผชิญกับคำเตือนที่น่าเบื่อนี้

โชคดี


0

ฉันใช้สิ่งนี้ใน index.js

if (__DEV__) {
  console.ignoredYellowBox = [
    'Remote debugger',
    'Warning: isMounted… is deprecated',
    'Module RCTImageLoader'
  ];
}

ฉันนำเข้าด้วยimport { AppRegistry, YellowBox } from 'react-native';
Mike S.

แม้ว่าฉันจะเพิ่งทดสอบสิ่งนี้ในแอปใหม่และดูเหมือนว่าจะใช้งานไม่ได้ สงสัยว่ามีอะไรเปลี่ยนแปลง0.57.4หรือไม่?
Mike S.


0

อาจมีโอกาสที่ดีบักเกอร์อื่นเชื่อมต่อกับแพ็กเกจแล้ว ดังนั้นปิดเทอร์มินัลของคุณและดีบักเกอร์ google chrome

หากคุณกำลังใช้ตัวจัดการแพ็คเกจของ Visual Studio อย่าเริ่มตัวจัดการแพ็คเกจด้วยคำสั่งเทอร์มินัล Mac / OS อื่น

ดังนั้นให้ปิดเทอร์มินัลทั้งหมดและหยุดไปที่ตัวจัดการแพ็คเกจและดีบักเกอร์ Google Chrome เริ่มกระบวนการอีกครั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.