【问题标题】:Vue router : TypeError: Cannot read property '$createElement' of undefinedVue路由器:TypeError:无法读取未定义的属性'$ createElement'
【发布时间】:2018-10-17 12:47:51
【问题描述】:

所以,我对 vue.js 还是很陌生,这很可能是我犯的愚蠢错误,但可惜的是,Google 今天似乎不是我的朋友,因为我一直在寻找超过 2 个几个小时,一无所获。

我在尝试加载组件时出现问题。该组件嵌套在其他组件中,路由器应该加载它。我有其他以这种方式加载的组件(使用<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.log('SMS Details beforeEnter()')
                  next()
                }
              }
            ],
            beforeEnter: (to, from, next) => {
              console.log('SMS list beforeEnter()')
              next()
            }
          }
        ]
      }
      [...]
    ]
  },

  { // Always leave this as last one
    path: '*',
    component: () => import('pages/404')
  }
]

加载失败的组件代码现在很简单:

<template>
  <div>
    blablabla
  </div>
</template>

<script>
</script>

<style>
</style>

父级只有一个&lt;router-view&gt;&lt;/router-view&gt;

【问题讨论】:

标签: javascript vue.js vuejs2 vue-router quasar


【解决方案1】:

我收到了同样的错误信息,我就是这样解决的:

component: workspace

没有

components: workspace

注意添加的s

在组件中s:工作区

是的,只要我把 s 从路线上放下就没事了。

像这样:

component: workspace

【讨论】:

  • 这应该是公认的答案,因为它只是一个拼写问题,不像公认的答案告诉它不可能。因为有可能
  • 是的,这应该是公认的答案。我也犯了同样的错误。
  • 同意其他评论者。拼写。
  • 非常感谢!
  • 哈哈,我们怎么都陷入了同样的问题?这绝对是我的问题。谢谢芽
猜你喜欢
  • 2017-11-20
  • 2021-07-18
  • 2020-02-23
  • 2020-10-29
  • 1970-01-01
  • 2015-05-25
  • 2021-06-11
  • 2022-06-28
  • 2020-10-09
相关资源
最近更新 更多