Vue.js 如何在条目JS中包含JS并从其他组件访问它

Vue.js 如何在条目JS中包含JS并从其他组件访问它,vue.js,socket.io,vuejs2,vue-router,vue-cli,Vue.js,Socket.io,Vuejs2,Vue Router,Vue Cli,我希望能够在我的Vue组件中使用Socket.IO实例,我不想在每个组件文件中从“Socket.IO client”导入IO,所以我想我应该能够在“main.js”文件中导入它,并在其他任何地方使用它 到目前为止,我已经看到了几个答案,但似乎没有一个有效 我试着包括 import io from 'socket.io-client' ... var sock = io('localhost:3000') export const globalStore = new Vue({ data:

我希望能够在我的Vue组件中使用Socket.IO实例,我不想在每个组件文件中从“Socket.IO client”导入IO,所以我想我应该能够在“main.js”文件中导入它,并在其他任何地方使用它

到目前为止,我已经看到了几个答案,但似乎没有一个有效

我试着包括

import io from 'socket.io-client'
...

var sock = io('localhost:3000')

export const globalStore = new Vue({
  data: {
    sock: sock
  }
})
在我的main.js中

import {globalStore} from '../main.js'

const SOCK = globalStore.sock
但我还是会
Uncaught ReferenceError:对象上未定义sock。登录

当我试着去做

SOCK.emit()


我希望能够包含一次JS文件(不仅仅是socket.io),并从任何地方调用它。

您可以将您的sock绑定到VueJS原型:

// main.js file

import Vue from 'vue'
import io from 'socket.io-client'

const sock = io('localhost:3000')

Vue.prototype.$sock = sock

new Vue({
    ...
})
然后,您可以在组件中访问它,如下所示:

export default {
    created () {
        console.log(this.$sock)
    }
}

谢谢,这对我的要求起了作用,但我发现我需要的不止这些。当我在组件中使用它时,它可以工作,但如果我想在外部JS文件中使用它,我无法访问它。例如,我的'index.vue'中包含了“auth.js”,我将登录详细信息传递给一个'auth.js',在那里进行实际的身份验证。如何在外部JS中使用此$sock。