[Vue警告]:无法找到元素 - 呈现空容器

时间:2017-03-27 17:55:11

标签: javascript webpack vuejs2 vue-component vue-router

我正在尝试学习Vue 2框架,我遇到了这个错误。我有以下脚本负责我的应用程序的功能:

main.js

import Vue from 'vue'
import VueRouter from 'vue-router'
import VueResource from 'vue-resource'
import App from './App.vue'
import Posts from './components/Posts.vue'
import Routes from './routes/routes'

Vue.config.productionTip = false

Vue.use(VueRouter)
Vue.use(VueResource)

const router = new VueRouter({
  routes: Routes
})

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

App.vue

<template>
  <div id="app">
    <router-view></router-view>
  </div>

</template>

<script>
  import Posts from './components/Posts.vue'

  export default {
    name: 'app',
    components: {
      Posts
    }
  }
</script>

<template>
    <div id='root'>
        <h1>Test</h1>   
        <input type="text" v-model="message">
    </div>
</template>

Posts.vue

<script>
    import Vue from 'vue'

    window.addEventListener('load', function () {
        new Vue({
            el: '#root',
            data: {
                message: 'Hello World!'
            }
        })
    })
</script>

这些脚本包含在页面末尾。重要的是要提到id为&#39; app&#39;的div。是空的。我也是webpack的新手,所以我认为我的进口和出口存在问题,但不幸的是我无法自己解决。索引页面只包含以下内容:

<div id="app"></div>

UPD (router.js)

import Posts from '../components/Posts.vue'

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

export default routes 

1 个答案:

答案 0 :(得分:0)

在App.vue中

<template>
  <div id="app">
   <router-view></router-view>
  </div>
</template>

<router-view>组件将根据当前路线显示组件。

import Posts from '../components/Posts.vue'

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

export default routes 

很明显,<router-view>会显示Posts组件。

Posts.vue

<template>
  <div id='root'>
    <h1>Test</h1>   
    <input type="text" v-model="message">
  </div>
</template>

<script>
import Vue from 'vue'

window.addEventListener('load', function () {
    new Vue({
        el: '#root',
        data: {
            message: 'Hello World!'
        }
    })
})
</script>

闪回到路由器,有一行说:

import Posts from '../components/Posts.vue'

这是导入默认语法,但Posts.vue已导出了什么?因此,没有任何东西导入到路由器。因此,#app内没有任何内容。

此外,帖子不一定是new Vue(...)个实例。

<template>
  <div id='root'>
    <h1>Test</h1>   
    <input type="text" v-model="message">
  </div>
</template>

<script>
import Vue from 'vue'

export default {
  data: {
    message: 'Hello World!'
  }
}
</script>

会做得很好。这样,路由器就可以使用默认导出。