Страница хостинга Vue Firebase отображается пустой после входа пользователя в систему

# #javascript #vue.js #vue-component #vue-router #firebase-hosting

Вопрос:

Я развернул проект Vue2 на хост-сервере Firebase, для просмотра других страниц пользователю требуется войти в систему. В настоящее время на сайте отображается только страница входа, если пользователь аутентифицирован, он перенаправится на следующую страницу, но она отображается пустой.

Вот как выглядит firebase.json

 { "database": {  "rules": "database.rules.json"  },  "firestore": {  "rules": "firestore.rules",  "indexes": "firestore.indexes.json"  },  "hosting": {  "public": "dist",  "ignore": [  "firebase.json",  "**/.*",  "**/node_modules/**"  ],  "rewrites": [  {  "source": "**",  "destination": "/index.html"  }  ]  },  "storage": {  "rules": "storage.rules"  },  "emulators": {  "auth": {  "port": 9000  },  "functions": {  "port": 9001  },  "firestore": {  "port": 9002  },  "database": {  "port": 9003  },  "hosting": {  "port": 9004  },  "pubsub": {  "port": 9005  },  "storage": {  "port": 9006  },  "ui": {  "enabled": true,  "port": 9007  }  },  "remoteconfig": {},  "functions": {  "source": "functions"  } }  

Он был развернут на сервере, но на нем отображается только страница входа в систему. Все остальные страницы не отображаются после входа в систему (перенаправление со страницы входа в систему). Он правильно изменил путь (URL).

Вот мой route.js

 import Login from './components/Login' import Home from './components/Home' import Dashboard from './views/Dashboard' import Recipe from './views/Recipe' import Permissions from './views/Permissions' import Report from './views/Report'  export const routes = [{  path: '*',  redirect: '/login'  },{  path: '/login',  name: 'login',  component: Login  },{  path: '/home',  name: 'home',  redirect: '/dashboard',  component: Home,  children:[{  path: '/dashboard',  name: 'dashboard',  component: Dashboard  },{  path:'/recipe',  name:'recipe',  component: Recipe  },{  path:'/permissions',  name:'permissions',  component: Permissions  },{  path:'/report',  name:'report',  component: Report  }],  meta: {  requiresAuth: true  }  } ];  

And main.js

 ... const router = new VueRouter({  mode: 'history',  routes });  router.beforeEach((to, from, next) =gt; {  const currentUser = firebase.auth().currentUser;  const requiresAuth = to.matched.some(record =gt; record.meta.requiresAuth);  if (requiresAuth amp;amp; !currentUser) next('login');  else if (!requiresAuth amp;amp; currentUser) next('home');  else next(); });  let app = ''; firebase.auth().onAuthStateChanged(user =gt; {  store.commit('authStateChanged', user);  if(!app){  app = new Vue({  router,  store,  firebase,  i18n,  render: h =gt; h(App)  }).$mount('#app')  } });  

And the login vue

 ... lt;scriptgt;  import {auth} from '../fire';  import Vue from 'vue';   export default {  name: 'Login',  methods: {  async onSubmit(event) {  event.preventDefault();  auth.signInWithEmailAndPassword(this.form.email, this.form.password)  .then(() =gt; {  this.$router.replace('dashboard');  }).catch((error) =gt; {  this.msg.err = error.code.replace('auth/','').split('-').join(' ');  });  }  }  } lt;/scriptgt;  

Я развернул приложение, запустив npm, запустив сборку, а затем развертывание firebase-только хостинг

Есть ли что-то не так с кодом?

Вот структура папок выглядит следующим образом

 hq  dist  css  img  js  index.html  ...  public  img  index.html  ...  src  assets  components  locales  views  ...  firebase.json  pacjage.json  ...  

Спасибо.

Комментарии:

1. Не уверен, что в этом проблема, но маршрут с подстановочными знаками всегда должен быть последней записью ваших маршрутов. Вполне возможно, что, поскольку он находится наверху, все маршруты, включая те, которые определены, теперь перенаправляются на /вход.

2. Привет, спасибо за совет, я поставил его на последнее, к сожалению, все еще не работает. 🙁

Ответ №1:

Выяснил, что у одной из библиотек есть проблема после сборки, удалил ее и проблема решена.