问题描述
我按照文档中提到的步骤操作。我有一个带有 React 的 Electron 应用程序。我之前使用过agora v3.6.0,一切正常。我想升级到 Agora v4,它不向后兼容,但看起来很容易实现。
我在发布本地曲目后收到以下错误。
AgoraRTC_N-production.js:637 Uncaught (in promise) TypeError: this.report.forEach is not a function
at b.<anonymous> (AgoraRTC_N-production.js:637)
at AgoraRTC_N-production.js:175
at Object.next (AgoraRTC_N-production.js:176)
at g (AgoraRTC_N-production.js:174)
来自我的项目的代码片段:
const agoraAccesstoken = await actions.auth.getAgoraAccesstoken({ requestParams: {channel: props.config.channel}});
console.log(agoraAccesstoken);
let uid = await AgoraClient.join(props.config.appId,props.config.channel,agoraAccesstoken);
console.log(uid);
let audioTrack = await AgoraRTC.createMicrophoneAudioTrack();
let videoTrack = await AgoraRTC.createCameravideoTrack();
await AgoraClient.publish([audioTrack,videoTrack]);
解决方法
如您所知,Agora 4.x SDK 不向后兼容。
差异不仅限于 tracks
的初始化。 3.x 和 4.x 的另一个不同之处在于 in-call stats
,这可能会导致 this.report.forEach
错误,但这只是假设,除非您提供更多代码。
如果您使用的是 React,我建议您查看开源 Agora React 项目,它封装了 Agora 4.x SDK 以遵循标准的 React 代码风格。
Full Guide: Building a Video Chat App Using React Hooks and Agora
注意:我没有亲自创建这个项目,也没有编写本指南,但我推荐它们,因为它们的创建目的是为了让 Agora 的 Web SDK 与 React 一起使用更容易。