【问题标题】:Vue js;Vue router is not constructor error in simple routeVue js;Vue路由器不是简单路由中的构造函数错误
【发布时间】:2017-07-21 20:01:06
【问题描述】:

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

这是我的 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
});

但我遇到了错误

app.js:11256 Uncaught TypeError: VueRouter is not a constructor

【问题讨论】:

  • 为什么你有window.VueRouter 而不仅仅是VueRouter,是laravel 需要的吗?
  • 是的,它适用于 laravel
  • 使用vue.use(window.vueRouter)import vueRouter from 'vue-router'let vueRouter = require('vue-router')
  • 尝试了上述解决方案都返回相同的错误:(
  • 我正在使用 laravel 混合器(将所有脚本构建到一个文件中,如 gulp 文件)

标签: laravel-5 vuejs2 vue-router


【解决方案1】:

此答案适用于希望对问题有更多了解的旁观者。

这里有两种解决方案。

方案一:ES 模块导入

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

import VueRouter from 'vue-router'

解决方案 2:CommonJS 要求

由于vue-router路由器一个es模块,你必须显式访问该模块的CommonJS版本的default属性。

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

任一解决方案

您必须向 Vue 注册 Vue Router。

Vue.use(VueRouter)

【讨论】:

  • 即使下面的解决方案被接受,由于解释,我更喜欢这个。谢谢!对于那些想要实现 VueRouter 并且对 Vue 不是很熟悉的人,这个方法很容易理解:laravel-news.com/using-vue-router-laravel
【解决方案2】:

基于 cmets,我终于用这个导入解决了

import VueRouter from 'vue-router';
Vue.use(VueRouter);

【讨论】:

  • 刚刚注意到我们必须把它放在resources/assets/js/app.js而不是resources/assets/js/bootstrap.js
  • 您必须在resources/assets/js/app.js中包含此代码
  • 它就像一个魅力。但是你能解释一下这段代码在做什么吗?
猜你喜欢
  • 2020-06-28
  • 1970-01-01
  • 2021-11-22
  • 2017-02-21
  • 2017-03-06
  • 2021-07-18
  • 1970-01-01
  • 2021-02-08
  • 2021-06-01
相关资源
最近更新 更多