Vue-router 无法延迟加载子组件
Vue-router cannot lazy load child component
我在我的项目中使用 vue-router,它正在使用一个库,不幸的是,该库不再处于活动开发中。我需要在那里添加一些东西,所以我下载了源代码,自己编辑它,然后将它构建到我项目的 "externals" 文件夹中。
现在,在项目不使用前端路由器之前一切正常,但最近,我用延迟加载组件实现了 vue-router,事情变得有点棘手。
我说的库保存在@/externals/date-picker
里面。
在我的延迟加载组件中,我使用 es6 imports:
导入它
import DatePicker from '@/externals/date-picker';
这会在 vue-router
:
中触发错误
Failed to resolve async component default: TypeError: Cannot set property 'vue-date-picker' of undefined
我不知道发生了什么,但它似乎无法将日期选择器添加到 module.exports
。
我很确定必须有加载外部文件的方法,即使它们是延迟加载的。所以,我的问题是,如何将外部 file/package 添加到我的延迟加载组件中?提前谢谢你。
代码
// router.js
import Vue from 'vue';
import Router from 'vue-router';
Vue.use(Router);
export default new Router({
mode: 'history',
base: process.env.BASE_URL,
routes: [
{
path: '/something',
name: 'something',
title: 'something',
component: () => import(/* webpackChunkName: "something" */ './views/Component.vue')
}
]
});
// Component.vue
<script>
import DatePickerOriginal from "@/external/date-picker";
export default {
components: {
DatePickerOriginal
}
};
</script>
并且 @/external/date-picker
的源代码与 here 几乎相同(好吧,构建工具是相同的,应用程序本身很可能不会导致问题)。此外,最好再次指出,该应用程序不在其他包所在的 node_modules
文件夹中,而是从 @/externals/date-picker
加载的。
看起来我的 webpack 配置中缺少 libraryTarget: 'window'
,同时在构建过程中合并包。
merge(commonConfig, {
entry: path.resolve(__dirname + '/src/plugin.js'),
output: {
// ...
libraryTarget: 'window'
}
})
我在我的项目中使用 vue-router,它正在使用一个库,不幸的是,该库不再处于活动开发中。我需要在那里添加一些东西,所以我下载了源代码,自己编辑它,然后将它构建到我项目的 "externals" 文件夹中。
现在,在项目不使用前端路由器之前一切正常,但最近,我用延迟加载组件实现了 vue-router,事情变得有点棘手。
我说的库保存在@/externals/date-picker
里面。
在我的延迟加载组件中,我使用 es6 imports:
import DatePicker from '@/externals/date-picker';
这会在 vue-router
:
Failed to resolve async component default: TypeError: Cannot set property 'vue-date-picker' of undefined
我不知道发生了什么,但它似乎无法将日期选择器添加到 module.exports
。
我很确定必须有加载外部文件的方法,即使它们是延迟加载的。所以,我的问题是,如何将外部 file/package 添加到我的延迟加载组件中?提前谢谢你。
代码
// router.js
import Vue from 'vue';
import Router from 'vue-router';
Vue.use(Router);
export default new Router({
mode: 'history',
base: process.env.BASE_URL,
routes: [
{
path: '/something',
name: 'something',
title: 'something',
component: () => import(/* webpackChunkName: "something" */ './views/Component.vue')
}
]
});
// Component.vue
<script>
import DatePickerOriginal from "@/external/date-picker";
export default {
components: {
DatePickerOriginal
}
};
</script>
并且 @/external/date-picker
的源代码与 here 几乎相同(好吧,构建工具是相同的,应用程序本身很可能不会导致问题)。此外,最好再次指出,该应用程序不在其他包所在的 node_modules
文件夹中,而是从 @/externals/date-picker
加载的。
看起来我的 webpack 配置中缺少 libraryTarget: 'window'
,同时在构建过程中合并包。
merge(commonConfig, {
entry: path.resolve(__dirname + '/src/plugin.js'),
output: {
// ...
libraryTarget: 'window'
}
})