Vue.js Vue未在组件中定义

Vue.js Vue未在组件中定义,vue.js,vuejs2,Vue.js,Vuejs2,我有一个文件:components.js: import Vue from 'vue' import SelectCategory from './components/SelectCategoryComponent' import CommentsManager from './components/CommentsManagerComponent' Vue.component('select-category', SelectCategory); Vue.component('comme

我有一个文件:components.js:

import Vue from 'vue'

import SelectCategory from './components/SelectCategoryComponent'
import CommentsManager from './components/CommentsManagerComponent'

Vue.component('select-category', SelectCategory);
Vue.component('comments-manager', CommentsManager);
在app.js中,我导入了此文件:

window.Vue = require('vue');

import './components'

但当加载页面时,我得到一个错误:
Vue未定义
。当我在每个组件中添加
从“Vue”导入Vue
时,所有组件都工作正常。但我如何才能全局添加Vue,而不必在每个组件中添加
从“Vue”导入Vue

正如我在您的
组件.js中所看到的那样,您已经导入了
Vue
,并且导入了另一个
Vue
,并将其放入了
窗口对象中。因此,您已经在应用程序中导入了两种不同的Vue,并且不需要使用以后可能会混淆的
components.js
app.js
。因此,我建议您将所有需求放在
app.js
文件中。 因此app.js文件将如下所示:

    import Vue from 'vue'; // es6 syntax
    window.Vue = Vue;

    import SelectCategory from './components/SelectCategoryComponent'
    import CommentsManager from './components/CommentsManagerComponent'

    Vue.component('select-category', SelectCategory);
    Vue.component('comments-manager', CommentsManager);
但我如何才能全局添加Vue,而不必在每个组件中从“Vue”添加导入Vue

您不应该使用全局变量。在每个文件中放置
从“Vue”导入Vue


现在,如果仍然需要,请使用
global
而不是
window
。并确保先加载该文件。或者,您可能希望在html文件中设置
window=
,并将其保留在每个文件之外。

如果我在每个组件中导入Vue,性能会很好吗?在多个组件中导入Vue并不意味着您在构建中会有多个Vue副本;它只是告诉webpack每个组件的依赖项是什么。