Jose Luiz Junior
Jose Luiz Junior

Reputation: 195

Problem with vue-router, not render my components and no errors

js and have a problem to use vue-router, my component isn't rendered and console show no errors, follow my code:

router config (/router/index.js):

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '@/pages/Home/Home.vue'
import NewUser from '@/pages/NewUser/NewUser.vue'

Vue.use(VueRouter)

const routes = [
    { path: '/', component: Home.default },
    { path: '/NewUser', component: NewUser.default }
]

export default new VueRouter({
    routes
})

main.js:

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

import 'primevue/resources/themes/nova-light/theme.css'
import 'primevue/resources/primevue.min.css'
import 'primeicons/primeicons.css'
import 'primeflex/primeflex.css'

import Vuelidate from 'vuelidate'
import Card from 'primevue/card'
import InputMask from 'primevue/inputmask'
import Button from 'primevue/button'
import Sidebar from 'primevue/sidebar'
import InputText from 'primevue/inputtext';
import Message from 'primevue/message';

Vue.config.productionTip = false


Vue.use(Vuelidate)
Vue.component('Card', Card)
Vue.component('InputMask', InputMask)
Vue.component('Button', Button)
Vue.component('Sidebar', Sidebar)
Vue.component('InputText', InputText)
Vue.component('Message', Message)

new Vue({
    router: router,
    render: h => h(App),
}).$mount('#app')

app.vue:

<template>
  <Fragment id="app">
      <Header />
          <router-view />
      <Footer />
  </Fragment>
</template>

<script src="./App.js"></script>
<style src="./App.css"></style>

my router-links is in header component, follow the github repository with the projetc:

https://github.com/juniorjrjl/weblib-front

thank you

[edited]

link removede because i solved part of problem and finally get error message

[edited]

I remove a link because not generate error in a link and I finally get error message after remove '.default' in my routes

vue.runtime.esm.js?2b0e:619 [Vue warn]: Error in nextTick: 
"NotFoundError: Failed to execute 'insertBefore' on 'Node': The node 
before which the new node is to be inserted is not a child of this 
node."

vue.runtime.esm.js?2b0e:1888 DOMException: Failed to execute 
'insertBefore' on 'Node': The node before which the new node is to be 
inserted is not a child of this node.
at HTMLBodyElement.n.insertBefore (webpack- 
internal:///./node_modules/vue-fragment/dist/vue- 
fragment.esm.js:5:1609)
at HTMLDivElement.e.insertBefore (webpack- 
internal:///./node_modules/vue-fragment/dist/vue- 
fragment.esm.js:5:1293)
at Object.insertBefore (webpack- 
internal:///./node_modules/vue/dist/vue.runtime.esm.js:5699:14)
at insert (webpack- 
internal:///./node_modules/vue/dist/vue.runtime.esm.js:6029:19)
at createComponent (webpack- 
internal:///./node_modules/vue/dist/vue.runtime.esm.js:5976:9)
at createElm (webpack- 
internal:///./node_modules/vue/dist/vue.runtime.esm.js:5915:9)
at updateChildren (webpack- 
internal:///./node_modules/vue/dist/vue.runtime.esm.js:6206:11)
at patchVnode (webpack- 
internal:///./node_modules/vue/dist/vue.runtime.esm.js:6309:29)
at VueComponent.patch [as __patch__] (webpack- 
internal:///./node_modules/vue/dist/vue.runtime.esm.js:6472:9)
at VueComponent.Vue._update (webpack- 
internal:///./node_modules/vue/dist/vue.runtime.esm.js:3942:19)

Upvotes: 2

Views: 5298

Answers (2)

Utsav Patel
Utsav Patel

Reputation: 2899

If you need to have a fallback route when the path does not match any component then do this.

const Foo = { template: "<div>foo</div>" };
const Bar = { template: "<div>bar</div>" };
const NotFound = { template: "<div>Page not found</div>" };

Vue.config.productionTip = false;

Vue.use(VueRouter);

const routes = [
  { path: "/NewUser", component: Bar },
  { path: "/", component: Foo },
  { path: "*", component: NotFound }
];

Working implementation attached.

Edit eager-borg-gbj7r

If you want to create nested router-views then read on it here:
https://router.vuejs.org/guide/essentials/named-views.html#nested-named-views

Upvotes: 1

shmallen
shmallen

Reputation: 13

Changing your route did the trick for me. For default routing the syntax is different (see more https://router.vuejs.org/guide/essentials/named-views.html#nested-named-views)

const routes = [
    { path: '/', component: Home },
    { path: '/NewUser', component: NewUser }
]

Upvotes: 0

Related Questions