Всем привет.
Есть приложение Vue, которое едино и для web и для mobile. То есть я могу собрать его и для публикации в качестве сайта и для использования как мобильного webview приложения.
Во время сборки для того и другого я использую переменную окружения, а уже в коде в зависимости от ее значения подключаю те или иные компоненты. Пример:
{
path: '/chat',
name: 'chats',
component: isWeb() ? Messages : ChatListMobile,
children: [
{
path: ':id',
name: 'chat',
component: () => import('./inc/MessagesBody'),
meta: {
auth,
},
},
],
meta: {
middleware: [
auth,
],
animation: true,
},
},
isWeb - это:
export function isWeb() {
return process.env.VUE_APP_PLATFORM === 'web';
}
И во время разработки все отлично. Но когда я собираю приложение, оно не работает - в консоли в чанке ошибка, мол
Uncaught (in promise) TypeError: Object(...) is not a function
.
Я всячески пытался с этим бороться - делал переменную, оборачивал в промисы, хардкодил isWeb как true и тд.
Когда забил и просто все такие условия в роутере закомментировал - появилась похожая проблема в template компонентов (там по такому же условию показываются и скрываются html блоки).
Я уже много что перепробовал - добавлял в vue.config.js :
configureWebpack: {
resolve: {
alias: {
'vue$': 'vue/dist/vue.js',
},
},
},
- чтобы в сборку попадал версия с компилятором, но это не работает.
В чем дело, что делать, подскажите. Я уже не знаю куда рыть. Это проблема с переменной окружения? Или билдить приложение надо как-то по другому (при разработке-то работает)?