我已经使用 npm 在我的 vue-cli 项目上安装了 socket.io
。
并像这样使用它:
import socketio from 'socket.io';
import VueSocketIO from 'vue-socket.io';
export const SocketInstance = socketio(MY_URL);
Vue.use(VueSocketIO, SocketInstance)
但是当我运行应用程序时,我得到了;
<块引用>Uncaught TypeError: exists is not a function
控制台出错。没有应用程序运行。
有人可以帮忙吗?
答案 0 :(得分:0)
如果我参考官方的 vue-socket.io 文档,基本用法是这样的(例如):
import Vue from 'vue'
import VueSocketIO from 'vue-socket.io'
Vue.use(new VueSocketIO({
connection: MY_URL,
}));
而且,如果你必须将 socket-io 实例传递给 vue-socket.io,你必须这样做:
import Vue from 'vue'
import VueSocketIO from 'vue-socket.io'
import SocketIO from 'socket.io-client'
const SocketInstance = SocketIO(MY_URL);
Vue.use(new VueSocketIO({
connection: SocketInstance,
}));
但是,在这种情况下,包不是 socket.io
而是 socket.io-client
。问题可能来自于此。
编辑:
对于身份验证,如果我参考 socket.io 文档:https://socket.io/docs/v4/client-initialization/#Socket-options 和 vue-socket.io 的用法,这是解决方案:
没有 socket-io-client :
import Vue from 'vue'
import VueSocketIO from 'vue-socket.io'
Vue.use(new VueSocketIO({
connection: MY_URL,
options: {
// authentication options
auth : {
token : 'qwerty',
}
},
}));
使用 socket.io-client :
import Vue from 'vue'
import VueSocketIO from 'vue-socket.io'
import SocketIO from 'socket.io-client'
const SocketInstance = SocketIO(MY_URL, {
// authentication options
auth : {
token : 'qwerty',
}
});
Vue.use(new VueSocketIO({
connection: SocketInstance,
}));