vue.js,延迟加载路由,块错误
vue.js, Lazy Loading Routes, chunks error
我使用 Vue Cli
创建延迟加载组件如下:
router/admin/index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
function lazyLoad(component){
return() => import(/* webpackChunkName: "/chunk/" */ '../../components/' + component)
}
const routes = [
{
path: '/admin',
component: Dashboard,
name: 'dashboard',
meta: { title: 'Dashboard' },
},
{
path: '/admin/devices',
component: lazyLoad('Admin/Devices.vue'),
name: 'devices',
meta: { title: 'Devices' },
children: [
{
path: ":id",
component: lazyLoad('Admin/Devices/Device.vue'),
name: 'device',
meta: { title: 'Device' },
}
]
}
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
export default router
编译后,"chunk" 文件夹中会出现名称为 0> 的文件。访问路由时,出现404错误,因为没有正确指定路径:
/host.com/js/0.js
它应该:
/host.ru/public/vue/dist/js/chunk/...
问:我需要在哪里指定路径?
我能够通过以下方式解决问题:
文件中vue.config.js表示编译文件的路径
module.exports = {
publicPath: '/public/vue/dist',
}
在注册路由的文件中更改
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
开启
const router = new VueRouter({
mode: 'history',
base: '/',
routes
})
我使用 Vue Cli
创建延迟加载组件如下:
router/admin/index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
function lazyLoad(component){
return() => import(/* webpackChunkName: "/chunk/" */ '../../components/' + component)
}
const routes = [
{
path: '/admin',
component: Dashboard,
name: 'dashboard',
meta: { title: 'Dashboard' },
},
{
path: '/admin/devices',
component: lazyLoad('Admin/Devices.vue'),
name: 'devices',
meta: { title: 'Devices' },
children: [
{
path: ":id",
component: lazyLoad('Admin/Devices/Device.vue'),
name: 'device',
meta: { title: 'Device' },
}
]
}
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
export default router
编译后,"chunk" 文件夹中会出现名称为 0> 的文件。访问路由时,出现404错误,因为没有正确指定路径:
/host.com/js/0.js
它应该:
/host.ru/public/vue/dist/js/chunk/...
问:我需要在哪里指定路径?
我能够通过以下方式解决问题:
文件中vue.config.js表示编译文件的路径
module.exports = {
publicPath: '/public/vue/dist',
}
在注册路由的文件中更改
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
开启
const router = new VueRouter({
mode: 'history',
base: '/',
routes
})