JS 错误
本节列出了我们社区报告的最常见的 Javascript 错误。
ReferenceError: Navigator is not defined
Section titled ReferenceError: Navigator is not defined有时当你尝试导入 tracker-assist 或 tracker-fetch 插件时会出现此错误,这是因为 node 在环境中没有 window API 的情况下尝试构建页面。
修复方法相当简单。你只需将引发问题的插件的常规导入:
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 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 frameOpenReplay 跟踪器默认捕获同域的 iFrame。但是,当它尝试捕获与你的网站不同域的 iFrame 时,会抛出错误。你可以选择:
- 使用
captureIFrames属性禁用整个功能,如下例所示:
const tracker = new OpenReplay({
projectKey: PROJECT_KEY,
captureIFrames: false
});
- 继续捕获 iFrame(默认行为),仅向同域的
<iframe>标签添加data-openreplay-captureHTML 属性。这样,跨域 iFrame 将不会被 OpenReplay 跟踪。
我的问题未列出
Section titled 我的问题未列出如果你遇到本页面未列出的任何错误,欢迎提交 issue,或直接联系我们的 Slack,或查看我们的论坛以从我们的社区获得帮助。