我在我的项目中使用了 vue-router,不幸的是,它正在使用一个不再处于积极开发中的库。我需要在那里添加一些东西,所以我下载了源代码,自己编辑了它,然后将其构建到项目的"外部"文件夹中。
现在,在项目不使用前端路由器之前,一切正常,但最近,我用延迟加载组件实现了 vue-router,事情变得有点棘手。
我所说的图书馆保存在@/externals/date-picker
内。 在我的延迟加载组件中,我使用 es6 导入导入它:
import DatePicker from '@/externals/date-picker';
这会触发vue-router
内部的错误:
无法解析异步组件默认值:类型错误:无法设置未定义的属性"vue-date-picker">
我不知道发生了什么,但似乎无法将日期选择器添加到module.exports
.
我很确定必须有加载外部文件的方法,即使它们是延迟加载的。所以,我的问题是,如何将外部文件/包添加到我的延迟加载组件中?提前谢谢你。
法典
// 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
的源代码几乎与此处相同(嗯,构建工具是相同的,应用程序本身很可能不会导致问题(。另外,再次指出可能会很好,该应用程序与其他包不在node_modules
文件夹中,而是从@/externals/date-picker
加载的。
看起来我的 webpack 配置中缺少libraryTarget: 'window'
,同时在构建过程中合并包。
merge(commonConfig, {
entry: path.resolve(__dirname + '/src/plugin.js'),
output: {
// ...
libraryTarget: 'window'
}
})