@villager123

Как правильно подключать компонет Vue в зависимости от переменной окружения?

Всем привет.
Есть приложение 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',
      },
    },
  },

- чтобы в сборку попадал версия с компилятором, но это не работает.
В чем дело, что делать, подскажите. Я уже не знаю куда рыть. Это проблема с переменной окружения? Или билдить приложение надо как-то по другому (при разработке-то работает)?
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы