Bonjour à tous,
J'ai suivis la formation VueJS 2 Vue Router avec plus ou moins de succès. Je rencontre un problème j'active le Lazy Loading.
Quelqu'un sait pourquoi ça se passe de cette façon ?
Les routes
{
path: '/catalog-rules',
component: resolve => require(['./components/CatalogRules.vue'], resolve),
name: 'catalog-rules'
},
{
path: '/terms',
component: resolve => require(['./components/Terms.vue'], resolve),
name: 'terms'
},
Les liens
<router-link :to="{ name: 'catalog-rules' }">Règles de publication</router-link>
<router-link :to="{ name: 'terms' }">Termes et Conditions</router-link>
App.vue
<div id="app">
<header-blade></header-blade>
<router-view></router-view>
<footer-blade></footer-blade>
</div>
J'ai trouvé un utilisateur qui a exactement le même problème que moi dans les issues de github.
https://github.com/vuejs/vue-router/issues/1074
Hi, thanks for filling this issue. You're probably using webpack 2.0, and this is a known issue.aroundSolution: simply use System.import()(deprecated in recent versions) or import() instead of require for lazy loading. More info here: #862
Le problème vient de webpack 2. c'est un problème connu apparement.
@virax merci de ton aide et d'avoir prit le temps pour moi.
Salut,
Il me semble que ton attribut "resolve" est en trop, normalement ajouter un seul attribut component devrait marcher..
{
path: '/terms',
component: require('./components/Terms.vue'),
name: 'terms'
}
As-tu essayé de cette façon ?
Hello,
Justement le resolve permet de faire le Lazy loading (découper en plusieurs fichier .js automatiquement). Si je l'enlève, ça marche, mais je n'ai plus le Lazy loading. Tout est compilé dans un seul fichier.
La syntax est celle de Jonathan dans la vidéo.
Re,
d'après la doc, si tu utilises webpack il faut utiliser a priori "require.ensure":
https://router.vuejs.org/en/advanced/lazy-loading.html
Aucune idée de pourquoi la version raccourcie ne marche pas chez toi.
T'as essayé la version longue?
@Virax Si tu regarde en dessous, il y a écrit : There's also an alternative code-split syntax using AMD style require, so this can be simplified to
const Foo = resolve => require(['./Foo.vue'], resolve)
qui est la syntax que @grafikart utilise et que j'utilise non ?
Je crois que @Grafikart doit être le plus apte à répondre à la question.
Ps: Peut être qu'en utilisant cette syntaxe, issue du même genre de probleme que toi, ça peut fonctionner:
"You used export default inside the component, which only works with import.
When you require it, it will give you an object of {default: (your component)}"
Si c'est ton cas, ça devrait marcher:
https://github.com/vuejs/vue-router/issues/656#issuecomment-249180199