vue-cli Uncaught TypeError上的socket.io错误:exists不是函数



我已经使用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

控制台上出现

错误。在没有应用程序的情况下运行。

有人能帮忙吗?

如果我参考官方的vue-socket.io文档,基本用法是:

import Vue from 'vue'
import VueSocketIO from 'vue-socket.io'
Vue.use(new VueSocketIO({
connection: MY_URL,
}));

而且,如果你必须将socket-ioInstance传递给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-选项和vue-socket.io的使用,这是解决方案:

无套接字io客户端:

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,
}));

最新更新