4

Im following this YT tutorial, I followed the steps but it seems that the ExampleComponent does not show. The App.vue shows but not the route.

Here are my code:

app.js

import Vue from 'vue';
import router from './router';
import App from './components/App';

require('./bootstrap');

const app = new Vue({
    el: '#app',
    components: {
        App
    },
    router,
});

router.js

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

import ExampleComponent from './components/ExampleComponent';

Vue.use(VueRouter);


export default new VueRouter({
    routes : [
        { path : '/', component : ExampleComponent }
    ],
    mode: 'history'
});

App.vue

<template>
    <div>
        <h1> Hello!</h1>
        <router-view></router-view>
    </div>
</template>

<script>
    export default {
        name : "App"
    }
</script>

<style scoped>
    
</style>

app.blade.php

<body>
    <div id="app">
        <App></App>
    </div>
</body>

web.php

Auth::routes();

Route::get('/{any}', 'HomeController@index')->where('any', '.*');

Thanks in advance.

8
  • any error in console .? Commented Sep 29, 2020 at 8:27
  • There is none. But the component does not work. But vue-router is ^3.4.5 and the vue is ^2.5.17... Im not sure if that is the issue Commented Sep 29, 2020 at 8:29
  • what is your web.php .? put that as well Commented Sep 29, 2020 at 8:31
  • 1
    Try out mode: 'hash' instead of mode: 'history' Commented Sep 29, 2020 at 8:32
  • @BoussadjraBrahim OMG, the hash works. Why is that? Im using Firefox Dev btw Commented Sep 29, 2020 at 8:35

2 Answers 2

4

Change the mode from history to hash because the history mode in this case is reserved to Laravel routing system :

export default new VueRouter({
routes : [
    { path : '/', component : ExampleComponent }
],
mode: 'hash'
});
Sign up to request clarification or add additional context in comments.

Comments

0

The mode: 'hash' is a great solution.

But if u want to use mode: "history" Then you have to add base Parameter . Base is useful when the application is hosted inside of a folder like http://localhost/laravel-8/. So code rewrite like following -

export default new VueRouter({
    mode: "history",
    base: '/laravel-8/',
    fallback:true,
    routes : [
        { path : '/', component : ExampleComponent }
    ]
})

Instead of /laravel-8/, you use your project subdirectory name.

Documentation: https://router.vuejs.org/guide/migration/#moved-the-base-option

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.