获取此错误:
Uncaught (in promise) TypeError: Cannot set properties of null (setting 'onmessage')
针对上下文;我正在构建一个结对编程平台。当用户导航到特定页面时,我会将他们连接到一个websocket。我有一个单独的发送函数,每次编程会话对的驱动程序键入某个内容时都会触发它。该代码通过网络套接字发送给乘客。有一个单独的方法用于侦听和等待来自服务器的侦听。
我得到的错误似乎来自这种方法:
class WebSocketService {
...
constructor() {
this.socketRef = null;
}
...
response(){
this.socketRef= null;
return new Promise((resolve, reject) => {
this.socketRef.onmessage = e => {
var response = JSON.parse(e.data)
console.log(`!!!! response: ${JSON.stringify(response)} !!!`)
resolve(response)
}
})
}
}
此方法在useEffect:内触发
useEffect((() => {
WebSocketInstance.response().then((res) => {
var temp = res ? JSON.parse(res.text) : ''
received.current = temp ? temp.data : ''
})
}))
我最初将用户连接到一个websocket。如果用户是配对编程会话的驱动程序,我会触发一个函数,将驱动程序在代码编辑器中键入的代码发送给乘客,然后乘客接收发送的代码。
您已经在构造函数中设置了:
this.socketRef = null;
因此,您正试图访问非现有属性。
如果你想在onmessage中以null值开始,你应该执行
this.socketRef.onmessage = null;