Итак, я новичок в vue.js, и это может быть такой же глупой ошибкой с моей стороны, но, увы, Google сегодня не кажется моим другом, так как я искал чуть больше двух часов и нашел ничего такого.
Моя проблема возникает при попытке загрузить компонент. Этот компонент вложен в другие компоненты, и маршрутизатор должен его загружать. У меня есть другие компоненты, которые загружаются таким образом (с использованием <router-view></router-view> и маршрутизатора) без каких-либо проблем. Единственное отличие этого компонента в том, что он вложен на 3 уровня в свой корень, в то время как среди всех других моих компонентов самый глубокий, который я использую, составляет 2 уровня.
Когда я пытаюсь загрузить этот компонент, я получаю 2 предупреждения и ошибку:
Предупреждение 1:
[vue-router] Failed to resolve async component render: TypeError: Cannot read property '$createElement' of undefined
Предупреждение 2:
[vue-router] uncaught error during route navigation
Ошибка:
TypeError: Cannot read property '$createElement' of undefined
at render (eval at ./node_modules/vue-loader/lib/template-compiler/index.js?{"id":"data-v-d2e33d82","hasScoped":false,"optionsId":"0","buble":{"transforms":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/config-pages/sms/smsConfigDetails.vue (app.js:1656), <anonymous>:5:16)
at eval (vue-router.esm.js?fe87:1774)
at eval (vue-router.esm.js?fe87:1801)
at Array.map (<anonymous>)
at eval (vue-router.esm.js?fe87:1801)
at Array.map (<anonymous>)
at flatMapComponents (vue-router.esm.js?fe87:1800)
at eval (vue-router.esm.js?fe87:1736)
at iterator (vue-router.esm.js?fe87:1943)
at step (vue-router.esm.js?fe87:1717)
Моя маршрутизация выглядит так; оба моих перехватчика beforeEnter вызываются, когда они должны быть, компонент, который не загружается, - это smsConfigDetails:
import allConfigs from 'pages/config-pages/allConfigs'
import smsConfigs from 'pages/config-pages/sms/allSmsConfigs'
import smsDetails from 'pages/config-pages/sms/smsConfigDetails'
export default [
{
path: '/',
component: () => import('layouts/default'),
children: [
{ path: '', component: () => import('pages/index') },
[...]
{
path: 'allconfigs',
component: allConfigs,
children: [
{
path: 'sms',
component: smsConfigs,
children: [
{
path: ':configId',
components: smsDetails,
beforeEnter: (to, from, next) => {
console.info('SMS Details beforeEnter()')
next()
}
}
],
beforeEnter: (to, from, next) => {
console.info('SMS list beforeEnter()')
next()
}
}
]
}
[...]
]
},
{ // Always leave this as last one
path: '*',
component: () => import('pages/404')
}
]
Код компонента, который не загружается, пока довольно прост:
<template>
<div>
blablabla
</div>
</template>
<script>
</script>
<style>
</style>
У родителя только один <router-view></router-view>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


У меня такое же сообщение об ошибке, вот как я его решил:
component: workspace
Нет
components: workspace
Обратите внимание на добавленный s
в components: рабочая область
Да, как только я сбросил s с маршрута, все было в порядке.
Как это:
component: workspace
это должно быть принято, потому что это просто орфографическая проблема, а не принятый ответ, говорящий, что это невозможно. Потому что это возможно
Да, это должен быть принятый ответ. У меня была такая же ошибка.
Согласен с другими комментаторами. Написание.
Большое спасибо!
Ха-ха, как мы все попали в одну и ту же проблему? Это определенно была моя проблема. Спасибо, приятель
Я думаю, вам не нужно вкладывать более одного дочернего элемента, посмотрите официальную документацию router.vuejs.org/en/essentials/nested-routes.html и посмотрите рабочий пример: jsfiddle.net/ricardoorellana/08trt6zb они делают 3 глубоких вложения только с одним дочерним массивом