Маршрутизатор Vue: TypeError: невозможно прочитать свойство $ createElement из undefined

Итак, я новичок в 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>

Я думаю, вам не нужно вкладывать более одного дочернего элемента, посмотрите официальную документацию router.vuejs.org/en/essentials/nested-routes.html и посмотрите рабочий пример: jsfiddle.net/ricardoorellana/08trt6zb они делают 3 глубоких вложения только с одним дочерним массивом

ricardoorellana 07.05.2018 20:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
6
1
11 448
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У меня такое же сообщение об ошибке, вот как я его решил:

component: workspace

Нет

components: workspace

Обратите внимание на добавленный s

в components: рабочая область

Да, как только я сбросил s с маршрута, все было в порядке.

Как это:

component: workspace

это должно быть принято, потому что это просто орфографическая проблема, а не принятый ответ, говорящий, что это невозможно. Потому что это возможно

Niels Lucas 31.12.2018 15:45

Да, это должен быть принятый ответ. У меня была такая же ошибка.

Sritam 14.02.2019 14:39

Согласен с другими комментаторами. Написание.

varontron 11.03.2019 21:19

Большое спасибо!

Kristiyan Tsvetanov 23.04.2019 15:38

Ха-ха, как мы все попали в одну и ту же проблему? Это определенно была моя проблема. Спасибо, приятель

Dev Yego 24.05.2019 18:29

Другие вопросы по теме