VueJS Router 'Failed to install component: no template or render function defined.'

I am following this video: https://laracasts.com/series/learn-vue-2-step-by-step/episodes/26?autoplay=true

My original problem was documented here , but that was resolved. I am including it here so you can see what steps I have taken so far.

Now I get this warning: [Vue warn]: Failed to install component: no template or render function defined.

The warning isn't too bad, but the router view is not displayed. That is, nothing appears under the Home and About Links links.

master.blade.php

<!doctype html>
    <html lang="en">
    <head>
        <title>My App</title>
        <link rel="stylesheet" href="/css/app.css">
    </head>
    <body>
        <div id="app">
            <router-link to="/">Home</router-link>
            <router-link to="/about">About</router-link>

            <router-view></router-view>
        </div>
        <script src="/js/app.js"></script>
    </body>
</html>

      

Home.vue

<template>
    <div class="container">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                <div class="panel panel-default">
                    <div class="panel-heading">Home Page</div>

                    <div class="panel-body">
                        I'm an example component!
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    export default {
        mounted() {
            console.log('Component mounted.')
        }
    }
</script>

      

Any help would be greatly appreciated. Thank!

[Edit 1]

resources / assets / js / app.js

import './bootstrap';
import router from './routes';


new Vue({
    el: '#app',
    router
});

      

resources / assets / js / bootstrap.js

import Vue from 'vue';
import VueRouter from 'vue-router';
import axios from 'axios';

window.Vue = Vue;
Vue.use(VueRouter);

window.axios = axios;

window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

let token = document.head.querySelector('meta[name="csrf-token"]');

if (token) {
    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
    console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}

      

[Edit 2]

resources / assets / js / routes.js

import VueRouter from 'vue-router';


let routes = [
    {
        path: '/',
        component: require('./views/Home.vue')
    }
];

export default new VueRouter({
    routes
});

      

+1


source to share


1 answer


Oh! Thanks to TheFallen , I see my problem. This is how my routes.js file should look like:



import VueRouter from 'vue-router';
import Home from './views/Home.vue';

let routes = [
    {
        path: '/',
        component: Home
    }
];

export default new VueRouter({
    routes
});

      

+1


source







All Articles