Ошибки JS
В этом разделе перечислены наиболее часто встречающиеся ошибки Javascript, о которых сообщает наше сообщество.
Require() of ES module
Section titled Require() of ES moduleЭта ошибка (как и приведённая ниже) обычно возникает, когда вы пытаетесь импортировать трекер в серверном контексте (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.
My problem is not listed
Section titled My problem is not listedЕсли вы столкнулись с какими-либо ошибками, не перечисленными на этой странице, не стесняйтесь создать issue или просто обратитесь в наш Slack либо загляните на наш Форум, чтобы получить помощь от нашего сообщества.
Have questions?
Section titled Have questions?Если у вас есть вопросы об этом процессе, не стесняйтесь связаться с нами в нашем Slack или заглянуть на наш Форум.