Vue js; Vue路由器在简单路由中不是构造函数错误

Jab*_*baa 6 laravel-5 vue-router vuejs2

我正在尝试使用官方路由库实现简单路由.

这是我的app.js

 window.Vue = require('vue');
    window.VueRouter= require('vue-router');

    Vue.use(VueRouter);

const vt=Vue.component('example', require('./components/Example.vue'));

const router = new VueRouter({
      routes:[
        {
          path:'/test',
          component:vt
        }
    ]
})

const app = new Vue({
    el: '#app',
    router:router
});
Run Code Online (Sandbox Code Playgroud)

但是我得到了一个错误

app.js:11256 Uncaught TypeError:VueRouter不是构造函数

Por*_*ori 6

这个答案适用于任何希望更深入了解问题的旁观者.

这里有两种解决方案.

解决方案1:ES模块导入

在Laravel的默认配置[至少]中,vue-router预计将作为es模块导入.所以,它应该在文件的顶部完成.

import VueRouter from 'vue-router'

解决方案2:CommonJS要求

由于vue-router路由器 es模块,因此您必须显式访问default模块的CommonJS版本的属性.

const VueRouter = require('vue-router').default;

要么解决方案

您必须使用Vue注册Vue Router.

Vue.use(VueRouter)


Jab*_*baa 5

根据评论最终我解决了此导入

import VueRouter from 'vue-router';
Vue.use(VueRouter);
Run Code Online (Sandbox Code Playgroud)

  • 只是注意到我们必须将其放在`resources / assets / js / app.js`中,而不是`resources / assets / js / bootstrap.js`中 (2认同)