أخطاء JS

جميع أنواع أخطاء Javascript.

أخطاء JS

يسرد هذا القسم أكثر أخطاء Javascript شيوعًا التي أبلغ عنها مجتمعنا.

ReferenceError: Navigator is not defined

Section titled ReferenceError: Navigator is not defined

يحدث هذا الخطأ أحيانًا عند محاولة استيراد المكوّنين الإضافيين tracker-assist أو tracker-fetch، ويحدث ذلك لأن node يحاول بناء الصفحة دون وجود واجهة برمجة التطبيقات window في البيئة.

الحل بسيط إلى حد ما. كل ما عليك فعله هو تغيير الاستيراد المعتاد للمكوّن الإضافي الذي يسبب المشكلة:

import trackerAssist from '@openreplay/tracker-assist/cjs';

إلى بديل الاستيراد الديناميكي داخل componendDidMount أو useEffect:

import Tracker, { Options } from "@openreplay/tracker";
const tracker = new Tracker({ /* your options */ });

class TrackerComponent extends React.Component {

  componentDidMount = () => {
    import(‘@openreplay/tracker-assist/cjs’).then(({ default: trackerAssist }) => {
      tracker.start(/* your options */)
      tracker.use(trackerAssist(/* your assist options */))
    })
   }

 /* Other code */

بهذه الطريقة سيتم استيراد جميع المكوّنات الإضافية التي تعتمد على واجهة برمجة التطبيقات window عند عرض المكوّن.

Critical dependency: the request of a dependency is an expression

Section titled Critical dependency: the request of a dependency is an expression

قد يحدث هذا مع الإصدارات القديمة من المكوّن الإضافي tracker-assist. ينبغي عليك تطبيق هذا الحل البديل إذا واجهت الخطأ أدناه أثناء التصريف (compiling):

Failed to compile.

./node_modules/peerjs/dist/peerjs.min.js
Critical dependency: the request of a dependency is an expression

Uncaught DOMException: Blocked a frame with origin “X” from accessing a cross-origin frame

Section titled Uncaught DOMException: Blocked a frame with origin “X” from accessing a cross-origin frame

يلتقط متعقّب OpenReplay افتراضيًا إطارات iFrame من النطاق نفسه. ومع ذلك، فإنه يُطلق خطأً عندما يحاول التقاط إطار iFrame ليس من النطاق نفسه الخاص بموقعك الإلكتروني. يمكنك إما:

  • تعطيل الوظيفة بالكامل باستخدام الخاصية captureIFrames كما في المثال أدناه:
const tracker = new OpenReplay({
      projectKey: PROJECT_KEY,
      captureIFrames: false
});
  • متابعة التقاط إطارات iFrame (السلوك الافتراضي) عن طريق إضافة سمة HTML المسماة data-openreplay-capture إلى وسوم <iframe> من النطاق نفسه فقط. بهذه الطريقة، لن يتم تعقّب إطارات iFrame عبر النطاقات (cross-origin) بواسطة OpenReplay.

مشكلتي غير مدرجة

Section titled مشكلتي غير مدرجة

إذا واجهت أي أخطاء غير مدرجة في هذه الصفحة، فلا تتردد في فتح مشكلة (issue) أو ببساطة تواصل معنا عبر Slack الخاص بنا، أو اطّلع على المنتدى للحصول على المساعدة من مجتمعنا.

إذا كانت لديك أي أسئلة حول هذه العملية، فلا تتردد في التواصل معنا عبر Slack الخاص بنا أو الاطّلاع على المنتدى.