Ошибки JS

Всевозможные ошибки Javascript.

Ошибки JS

В этом разделе перечислены наиболее часто встречающиеся ошибки Javascript, о которых сообщает наше сообщество.

Эта ошибка (как и приведённая ниже) обычно возникает, когда вы пытаетесь импортировать трекер в серверном контексте (SSR, приложения Nuxt, Next, Remix и т. д.).

Для её устранения необходимо убедиться, что трекер импортируется и запускается в контексте браузера — с помощью динамических импортов, клиентских компонентов и т. д.

ReferenceError: Navigator is not defined

Section titled ReferenceError: Navigator is not defined

Иногда эта ошибка возникает при попытке импортировать плагины tracker-assist или tracker-fetch; это происходит потому, что node пытается собрать страницу без API 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 */

Таким образом все плагины, зависящие от API 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. Вам следует применить это обходное решение, если при компиляции вы сталкиваетесь со следующей ошибкой:

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, как в примере ниже:
tracker.configure({
      projectKey: PROJECT_KEY,
      captureIFrames: false
});
  • Продолжать захватывать iFrame (поведение по умолчанию), добавив HTML-атрибут data-openreplay-capture только к тегам <iframe> с того же домена. Таким образом, iFrame с других доменов не будут отслеживаться OpenReplay.

Если вы столкнулись с какими-либо ошибками, не перечисленными на этой странице, не стесняйтесь создать issue или просто обратитесь в наш Slack либо загляните на наш Форум, чтобы получить помощь от нашего сообщества.

Если у вас есть вопросы об этом процессе, не стесняйтесь связаться с нами в нашем Slack или заглянуть на наш Форум.