uni 对象为空 在调用前提前 console 出 uni 对象就不会报错

在调用前提前 console 出 uni 对象就不会报错
请问各位有遇到这种情况吗
以下是 调用的js 代码
import Stomp from 'stompjs'
let socketOpen = false
let socketMsgQueue = []
const obj = {
client: null,
init(url, header ,connectWS) {
if (this.client && this.client.connected) {
console.log("this.client ws缓存");
console.log(this.client);
return Promise.resolve(this.client)
}
return new Promise((resolve, reject) => {
const ws = {
send: this.sendMessage,
onopen: null,
onmessage: null,
}
uni.connectSocket({ url, header })
uni.onSocketOpen(function (res) {
console.log('WebSocket连接已打开!', res)
socketOpen = true
for (let i = 0; i < socketMsgQueue.length; i++) {
ws.send(socketMsgQueue[i])
}
socketMsgQueue = []
ws.onopen && ws.onopen()
})
uni.onSocketMessage(function (res) {
// ios 缺少 0x00 导致解析失败
if (res && res.data) {
let value = res.data;
let code = value.charCodeAt(value.length - 1);
if (code !== 0x00) {
value += String.fromCharCode(0x00);
res.data = value;
}
}
ws.onmessage && ws.onmessage(res)
})
uni.onSocketError(function (res) {
console.log('WebSocket 错误!', res)
})
uni.onSocketClose((res) => {
this.client = null
socketOpen = false
console.log('WebSocket 已关闭!', res)
if(res.code !== 1000){
setTimeout(()=>{
connectWS()
},3000)
}
})
Stomp.setInterval = function (interval, f) {
return setInterval(f, interval)
}
Stomp.clearInterval = function (id) {
return clearInterval(id)
}
const client = (this.client = Stomp.over(ws))
// 关闭连接
client.close = () =>{
uni.closeSocket()
}
client.connect(header, function () {
console.log('stomp connected')
resolve(client)
})
})
},
sendMessage(message) {
if (socketOpen) {
uni.sendSocketMessage({
data: message,
})
} else {
socketMsgQueue.push(message)
}
},
}
console.log("WebSocket obj")
console.log(obj)
export const webSocketUtil = obj