ہم درج کر کے پروڈکشن بلڈ کے ساتھ سنٹری کی جانچ کر سکتے ہیں:
yarn build
اور بلڈ فولڈر سے درج کریں:
npx http-server -c-1
ہمیں فوری طور پر جس مسئلہ کا سامنا کرنا پڑتا ہے وہ یہ ہے کہ سینٹری کے ایرر ریکارڈز minified بیچ میں لائن نمبرز کا حوالہ دیتے ہیں۔ بہت مفید نہیں.
سینٹری سروس غلطی موصول ہونے کے بعد کم شدہ پیکٹ کے سورس میپس کو کھینچ کر اس کی وضاحت کرتی ہے۔ اس معاملے میں ہم لوکل ہوسٹ سے چل رہے ہیں (سینٹری سروس کے ذریعے قابل رسائی نہیں ہے)۔
حل (ماخذ نقشے)
اس مسئلے کا حل عوامی ویب سرور سے ایپلی کیشن کو چلانا ہے۔ GitHub Pages سروس (مفت) استعمال کرنے کے لیے ایک آسان جوابی بٹن۔ استعمال کرنے کے اقدامات عام طور پر درج ذیل ہیں:
فولڈر کے مواد کو کاپی کریں۔ تعمیر فولڈر میں دستاویزات ریپوزٹری کی روٹ ڈائرکٹری میں۔
آن کر دو گٹ ہب صفحات میں دستاویزات کے فولڈر کو استعمال کرنے کے لیے ذخیرہ میں (گٹ ہب سے) ماسٹر شاخوں
GitHub میں تبدیلیوں کو پش کریں۔
نوٹ: جب میں نے سوچا کہ مجھے کیا استعمال کرنے کی ضرورت ہے۔ create-create-app ایپلیکیشن لانچ کرنے کے لیے ہوم پیج فنکشن۔ پیکیج.json میں درج ذیل کو شامل کرنے کے لئے نیچے آیا:
بے حساب غلطیوں کو بہتر طریقے سے ہینڈل کرنا (رینڈرنگ)
غلطی کی حدود کا تعارف
یوزر انٹرفیس کے ایک حصے میں جاوا اسکرپٹ کی خرابی پوری ایپلیکیشن کو نہیں توڑ سکتی۔ React صارفین کے لیے اس مسئلے کو حل کرنے کے لیے، React 16 نے ایک نیا تصور متعارف کرایا ہے جسے "error bounds" کہا جاتا ہے۔
ایرر باؤنڈریز ری ایکٹ اجزاء ہیں جو اپنے چائلڈ کمپوننٹ ٹری میں کہیں بھی جاوا اسکرپٹ کی خرابیوں کو پکڑتے ہیں، ان غلطیوں کو لاگ ان کرتے ہیں، اور کریش ہونے والے جزو کے درخت کی بجائے فال بیک UI پیش کرتے ہیں۔ غلطی کی حدود رینڈرنگ کے دوران، لائف سائیکل طریقوں میں، اور ان کے نیچے پورے درخت کے کنسٹرکٹرز میں غلطیاں پکڑتی ہیں۔
...
ناقابل شناخت غلطیوں کے لیے نیا طرز عمل
یہ تبدیلی اہم ہے۔ React 16 کے مطابق، وہ غلطیاں جو کسی ایرر باؤنڈری سے نہیں پکڑی گئی تھیں، ان کے نتیجے میں پورے React جزو کے درخت کو ان ماؤنٹ کیا جائے گا۔
ایک اہم وضاحت جس نے مجھے یہ سمجھنے سے پہلے کچھ وقت لیا وہ یہ ہے۔ مندرجہ بالا سلوک صرف رینڈر کے طریقہ کار میں پھینکی گئی غلطیوں کے ساتھ کام کرتا ہے (یا لائف سائیکل طریقوں میں سے کسی میں زیادہ امکان ہے). مثال کے طور پر، غلطی کی حدود کا استعمال ہمارے بٹن کے ساتھ کوئی اچھا کام نہیں کرے گا۔ خرابی; یہ غلطی کلک ہینڈلر میں تھی۔
آئیے ایک مثال رینڈرنگ ایرر بنائیں اور پھر ایرر باؤنڈز کا استعمال کریں تاکہ ایرر کو مزید خوبصورتی سے ہینڈل کیا جاسکے۔
جب آپ بٹن دبائیں گے، جواب دیں دکھایا جائے گا flag.busted.bogus، جو ایک خرابی پیدا کرتا ہے۔
خرابی کی حد کے بغیر، پورا جزو درخت ان ماؤنٹ ہو جائے گا۔
پھر ہم اپنا ایرر باؤنڈری کوڈ لکھتے ہیں (نئے لائف سائیکل کا طریقہ استعمال کرتا ہے۔ componentDidCatch); یہ بنیادی طور پر ڈین ابراموف کے مضمون میں دی گئی مثال ہے:
react-app/src/ErrorBoundary.js
import React, { Component } from 'react';
import * as Sentry from '@sentry/browser';
export default class ErrorBoundary extends Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
componentDidCatch(err, info) {
this.setState({ hasError: true });
Sentry.captureException(err);
}
render() {
if (this.state.hasError) {
return <h1>Something went wrong.</h1>;
}
return this.props.children;
}
}