Vue Router 导入不能与 require 一起工作
Vue Router import not working with require
我正在建立一个全新的 Vue 2 项目。由于与我需要使用的库之一的兼容性问题,我还不能迁移到 Vue 3。
我现在有一个非常基本的设置,文件夹结构是这样的:
/
App.vue
main.js
router.js
/pages
AboutUs.vue
Home.vue
如果我不使用 Vue Router,只是将 AboutUs 页面导入 App.vue 并在模板中调用它的标签,它会按预期显示。
当我改为使用 Vue 路由器在 App.vue 的 <router-view />
标记中呈现它时,我收到错误消息:
[Vue warn]: Failed to mount component: template or render function not defined.
我怀疑这意味着我在路由器中做错了什么,但我看不到什么。
main.js
import Vue from 'vue'
import App from './App.vue'
import router from 'router.js'
new Vue({
render: h => h(App),
router
}).$mount('#app')
App.vue
<template>
<div id="app">
<router-link to="/">Home</router-link>
<router-link to="/About">About</router-link>
<router-view />
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
router.js
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const About = require('../pages/AboutUs')
const Home = require('../pages/Home')
const routes = [
{
path: '/about',
name: 'About',
component: About
},
{
path: '*',
name: 'Home',
component: Home
}
]
const router = new VueRouter({
linkExactActiveClass: '',
routes
})
export default router
About.vue
<template>
<div>
<h1>About</h1>
</div>
</template>
<script>
export default {
}
</script>
es6 导入
尝试使用 es6 导入而不是 require
:
import About from '../pages/AboutUs'
import Home from '../pages/Home'
然后您的路由语法将按原样工作。这是因为当您使用 require
时,您得到的是整个模块,而不是模块的 Component
导出。
-或-
require
或者,如果您想继续使用 require
,您需要使用以下语法,使用模块的 default
属性:
const About = require('../pages/AboutUs')
const Home = require('../pages/Home')
const routes = [
{
path: '/about',
name: 'About',
component: About.default
},
{
path: '*',
name: 'Home',
component: Home.default
}
]
我正在建立一个全新的 Vue 2 项目。由于与我需要使用的库之一的兼容性问题,我还不能迁移到 Vue 3。
我现在有一个非常基本的设置,文件夹结构是这样的:
/
App.vue
main.js
router.js
/pages
AboutUs.vue
Home.vue
如果我不使用 Vue Router,只是将 AboutUs 页面导入 App.vue 并在模板中调用它的标签,它会按预期显示。
当我改为使用 Vue 路由器在 App.vue 的 <router-view />
标记中呈现它时,我收到错误消息:
[Vue warn]: Failed to mount component: template or render function not defined.
我怀疑这意味着我在路由器中做错了什么,但我看不到什么。
main.js
import Vue from 'vue'
import App from './App.vue'
import router from 'router.js'
new Vue({
render: h => h(App),
router
}).$mount('#app')
App.vue
<template>
<div id="app">
<router-link to="/">Home</router-link>
<router-link to="/About">About</router-link>
<router-view />
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
router.js
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const About = require('../pages/AboutUs')
const Home = require('../pages/Home')
const routes = [
{
path: '/about',
name: 'About',
component: About
},
{
path: '*',
name: 'Home',
component: Home
}
]
const router = new VueRouter({
linkExactActiveClass: '',
routes
})
export default router
About.vue
<template>
<div>
<h1>About</h1>
</div>
</template>
<script>
export default {
}
</script>
es6 导入
尝试使用 es6 导入而不是 require
:
import About from '../pages/AboutUs'
import Home from '../pages/Home'
然后您的路由语法将按原样工作。这是因为当您使用 require
时,您得到的是整个模块,而不是模块的 Component
导出。
-或-
require
或者,如果您想继续使用 require
,您需要使用以下语法,使用模块的 default
属性:
const About = require('../pages/AboutUs')
const Home = require('../pages/Home')
const routes = [
{
path: '/about',
name: 'About',
component: About.default
},
{
path: '*',
name: 'Home',
component: Home.default
}
]