我正在将 openjs 集成到我的 Vuejs 项目中。但我此刻陷入困境。下面的代码非常简单,却给我以下错误。
代码
<template>
</template>
<script>
export default {
// eslint-disable-line no-unused-vars
name: 'Video-call',
created () {
}
}
var session = OT.initSession('apikey', 'sessionid')
var publisher = OT.initPublisher()
session.connect('token', function (err) {
console.log(err)
})
console.log(session)
console.log(publisher)
session.publish(publisher)
session.on('streamCreated', function (event) {
session.subscribe(event.stream)
})
</script>
异常详细信息
uncaught TypeError: Cannot convert undefined or null to object
at slice (<anonymous>)
at nodeListToArray (opentok.js:19284)
at selectorToElementArray (opentok.js:19327)
at new ElementCollection (opentok.js:19360)
at module.exports (opentok.js:19255)
at Object.browserAjax.request (opentok.js:20174)
at Object.browserAjax.post (opentok.js:20217)
at opentok.js:42190
at loop (opentok.js:42373)
at QueueRunner.run (opentok.js:42377)
我找不到我在做错什么。
答案 0 :(得分:0)
尝试: `
import OT from 'YOUR PATH'
export default {
name: 'Video-call',
created () {
var session = OT.initSession('apikey', 'sessionid')
var publisher = OT.initPublisher()
session.connect('token', function (err) {
console.log(err)
})
console.log(session)
console.log(publisher)
session.publish(publisher)
session.on('streamCreated', function (event) {
session.subscribe(event.stream)
})
}
}
`
答案 1 :(得分:0)
当我运行该代码(不使用vuejs)时,在发布之前,我收到有关需要连接的错误。您需要将session.publish调用移到session.connect回调内部。
您收到的其他TypeError似乎是将对象而不是元素ID传递给OT.initPublisher,session.publish或session.subscribe。这些方法中的每一个都有一个参数,该参数应该是HTMLNode或HTMLNode的ID。如果传入例如,则会得到该错误。而是一个对象,并且内部opentok尝试执行document.querySelectorAll(object)并返回空值。