Я предполагаю, что проблема в том, что вы используете
let Picker = ()=>import("./emoji-mart-vue");
Vue.component("picker", Picker);
, чтобы прояснить ситуацию, вы определяете компонент непосредственно до того, как обещание разрешено, поэтому компоненту назначено обещание. вместо разрешенного компонента.
Решение неясно и зависит от того, «что вы пытаетесь выполнить sh»
Одно из возможных решений:
import("./emoji-mart-vue")
.then(Picker=> {
Vue.component("picker", Picker);
// other vue stuff
});
Это (блокирует) ожидание загрузки компонента перед загрузкой остальной части приложения. ИМХО, это противоречит цели разделения кода, поскольку общее время загрузки приложения, вероятно, хуже.
Другой вариант
- загрузить его на компонент, который в нем нуждается.
чтобы вы могли поместить это в .vue
sf c, который его использует:
export default {
components: {
Picker: () => import("./emoji-mart-vue")
}
};
Но это сделало бы так, что все компоненты, которые его используют, должны иметь это добавленное, однако это может иметь преимущества в разделении кода, так как он будет загружаться только тогда, когда это необходимо в первый раз, поэтому, если пользователь попадает на маршрут, который ему не нужен, время загрузки будет быстрее.
Остроумный способ решить ее
можно с помощью компонента-заполнителя, в то время как другой загружает
const Picker= () => ({
component: import("./emoji-mart-vue"),
loading: SomeLoadingComponent
});
Vue.component("picker", Picker);
или, если вы не хотите загружать другой компонент (SomeLoadingComponent
), вы можете передать такой шаблон
const Picker= () => ({
component: import("./emoji-mart-vue"),
loading: {template:`<h1>LOADING</h1>`},
});
Vue.component("picker", Picker);