أخطاء 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 الخاص بنا، أو اطّلع على المنتدى للحصول على المساعدة من مجتمعنا.
لديك أسئلة؟
Section titled لديك أسئلة؟إذا كانت لديك أي أسئلة حول هذه العملية، فلا تتردد في التواصل معنا عبر Slack الخاص بنا أو الاطّلاع على المنتدى.