JS 错误

各种 Javascript 错误。

JS 错误

本节列出了我们社区报告的最常见的 Javascript 错误。

ReferenceError: Navigator is not defined

Section titled ReferenceError: Navigator is not defined

有时当你尝试导入 tracker-assisttracker-fetch 插件时会出现此错误,这是因为 node 在环境中没有 window API 的情况下尝试构建页面。

修复方法相当简单。你只需将引发问题的插件的常规导入:

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

改为在 componendDidMountuseEffect 内部动态导入的替代方案:

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 API 的插件都会在组件渲染时被导入。

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 属性禁用整个功能,如下例所示:
const tracker = new OpenReplay({
      projectKey: PROJECT_KEY,
      captureIFrames: false
});
  • 继续捕获 iFrame(默认行为),向同域的 <iframe> 标签添加 data-openreplay-capture HTML 属性。这样,跨域 iFrame 将不会被 OpenReplay 跟踪。

如果你遇到本页面未列出的任何错误,欢迎提交 issue,或直接联系我们的 Slack,或查看我们的论坛以从我们的社区获得帮助。

如果你对此过程有任何疑问,欢迎在我们的 Slack 上联系我们,或查看我们的论坛