Vue-router не может лениво загрузить дочерний компонент - PullRequest
0 голосов
/ 08 октября 2018

Я использую vue-router внутри своего проекта, который работает с библиотекой, которая, к сожалению, больше не находится в активной разработке.Мне нужно было добавить туда несколько вещей, поэтому я скачал исходный текст, отредактировал его сам, а затем встроил в папку «externals» моего проекта.

Теперь, пока проект не использовал интерфейсный маршрутизатор, все работало нормально, но в последнее время я реализовал vue-router с компонентами с отложенной загрузкой, и все стало немного сложнее.

БиблиотекаЯ говорил о сохранении внутри @/externals/date-picker.Внутри моего лениво загруженного компонента я импортирую его, используя es6 import:

import DatePicker from '@/externals/date-picker';

, что вызывает ошибку внутри vue-router:

Не удалось разрешить асинхронный компонент по умолчанию: TypeError: Cannotустановить свойство '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.

1 Ответ

0 голосов
/ 09 октября 2018

Похоже, мне не хватало libraryTarget: 'window' в конфигурации моего веб-пакета при объединении пакета в процессе сборки.

merge(commonConfig, {
    entry: path.resolve(__dirname + '/src/plugin.js'),
    output: {
        // ...
        libraryTarget: 'window'
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...