使用AgoraRTM SDK构建RTM应用遇调用错误求助
解决AgoraRTM
createInstance is not a function 及类调用错误问题 问题根源
- SDK版本与API调用不匹配(v1和v2版本API差异显著)
- SDK脚本未正确加载(Django静态文件路径配置错误)
- 错误的实例化方式(比如v1版本未使用
new关键字)
分步解决方案
1. 确认SDK版本并匹配对应API
Agora RTM Web SDK分为v1.x和v2.x两个主要版本,API完全不同:
- v2.x版本(推荐使用):使用
AgoraRTM.createInstance()创建客户端实例 - v1.x版本:需要通过
new AgoraRTM.RTM()实例化类(不能直接调用类作为函数)
2. 确保SDK脚本正确引入(Django环境下)
在HTML模板中利用Django静态文件标签正确引入SDK,避免路径错误:
<!-- 引入v2.x SDK --> <script src="{% static 'js/agora-rtm-sdk.js' %}"></script> <!-- 或者引入v1.x SDK --> <script src="{% static 'js/agora-rtm-sdk-v1.js' %}"></script>
- 检查
settings.py中的静态文件配置是否正确:STATIC_URL = '/static/' STATICFILES_DIRS = [ BASE_DIR / "static", ] - 打开浏览器开发者工具的Network标签,确认SDK脚本返回200状态(无404错误)
3. 修正代码示例
针对v2.x SDK的正确代码
const APP_ID = '你的Agora APPID'; const TOKEN = '你的RTM Token'; // 测试可使用临时Token,生产环境需由服务器生成 const USER_ID = '唯一用户ID'; let rtmClient; async function startRtm() { try { // v2.x 正确实例化方式 rtmClient = AgoraRTM.createInstance(APP_ID); await rtmClient.login({ token: TOKEN, uid: USER_ID }); console.log('AgoraRTM 登录成功'); } catch (err) { console.error('登录错误:', err); } } startRtm();
针对v1.x SDK的正确代码
const APP_ID = '你的Agora APPID'; const TOKEN = '你的RTM Token'; const USER_ID = '唯一用户ID'; let rtmClient; async function startRtm() { try { // v1.x 必须用new关键字实例化类 rtmClient = new AgoraRTM.RTM(APP_ID); await rtmClient.login(TOKEN, USER_ID); console.log('AgoraRTM 登录成功'); } catch (err) { console.error('登录错误:', err); } } startRtm();
4. 额外排查点
- 确认APP_ID、TOKEN、USER_ID无拼写错误或多余空格
- 测试环境中如果没有Token,可传入
null(仅适用于开启「APP内用户免鉴权」的项目) - 确保网页运行在HTTPS或localhost环境(Agora SDK限制非安全域名下的功能)
内容的提问来源于stack exchange,提问作者George DA Silver Ajadhugan
相关产品推荐
相关产品推荐

