Errores de JS

Todo tipo de errores de Javascript.

Errores de JS

Esta sección enumera los errores de Javascript más frecuentes y reportados por nuestra comunidad.

ReferenceError: Navigator is not defined

Section titled ReferenceError: Navigator is not defined

A veces este error ocurre cuando intentas importar los plugins tracker-assist o tracker-fetch; esto sucede porque node intenta construir la página sin la API window en el entorno.

La solución es bastante sencilla. Todo lo que tienes que hacer es cambiar la importación habitual del plugin que causa el problema:

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

Por la alternativa de importación dinámica dentro de componendDidMount o 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 */

De esta manera, todos los plugins que dependen de la API window se importarán cuando el componente se renderice.

Critical dependency: the request of a dependency is an expression

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

Esto puede ocurrir con versiones antiguas del plugin tracker-assist. Deberías aplicar esta solución alternativa si te encuentras con el siguiente error al compilar:

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

El tracker de OpenReplay captura por defecto los iFrames del mismo dominio. Sin embargo, lanza un error cuando intenta capturar un iFrame que NO es del mismo dominio que tu sitio web. Puedes:

  • Desactivar toda la funcionalidad usando la propiedad captureIFrames como en el ejemplo siguiente:
const tracker = new OpenReplay({
      projectKey: PROJECT_KEY,
      captureIFrames: false
});
  • Seguir capturando iFrames (comportamiento por defecto) añadiendo el atributo HTML data-openreplay-capture únicamente a las etiquetas <iframe> del mismo dominio. De esta forma, los iFrames de origen cruzado no serán rastreados por OpenReplay.

Mi problema no está en la lista

Section titled Mi problema no está en la lista

Si te encuentras con errores que no aparecen en esta página, no dudes en crear un issue o simplemente contacta con nuestro Slack o consulta nuestro Foro para obtener ayuda de nuestra comunidad.

Si tienes alguna pregunta sobre este proceso, no dudes en contactarnos en nuestro Slack o consultar nuestro Foro.