vue-cli 上的 socket.io 错误 Uncaught TypeError: exists is not a function

时间:2021-06-08 12:48:40

标签: vue.js npm socket.io

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

控制台出错。没有应用程序运行。

有人可以帮忙吗?

1 个答案:

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