Vue - Vue маршрутов не существует - PullRequest
0 голосов
/ 22 марта 2020

У меня есть проект в Laravel + Vue. В Laravel у меня есть несколько маршрутов для создания конечных точек и start page.

Laravel Routes

Route::get('/', 'Auth\LoginController@showLoginForm');

Route::post('/login', 'Auth\LoginController@login');

Auth::routes();

Route::resource('gateways', 'GatewayController');

Route::resource('contadores', 'ContadorController');

' / ' маршрут go до Blade файл с компонентом входа .

Компонент входа в систему имеет этот код.

<template>
  <v-content slot="content">
    <v-container class="fill-height" fluid>
      <v-row align="center" justify="center">
        <v-col cols="12" md="8">
          <v-card class="elevation-12">
            <v-toolbar dark flat>
              <v-toolbar-title>LoRaWAN</v-toolbar-title>
            </v-toolbar>
            <v-card-text>
              <v-form>
                <v-text-field
                  label="Usuario"
                  name="username"
                  prepend-icon="mdi-account"
                  type="text"
                  v-model="username"
                />
                <v-text-field
                  label="Contraseña"
                  name="password"
                  prepend-icon="mdi-key"
                  :append-icon="value ? 'mdi-eye' : 'mdi-eye-off'"
                  @click:append="() => (value = !value)"
                  :type="value ? 'password' : 'text'"
                  v-model="password"
                />
              </v-form>
            </v-card-text>
            <v-card-actions>
              <v-btn block dark @click="submit()">Entrar</v-btn>
            </v-card-actions>
          </v-card>
        </v-col>
      </v-row>
    </v-container>
  </v-content>
</template>

<script>
export default {
  data() {
    return {
      value: String,
      username: "",
      password: ""
    };
  },
  methods: {
    submit() {
      axios
        .post("http://127.0.0.1:8000/login", {
          username: this.username,
          password: this.password
        })
        .then(response => {
          if (response.data.token != null) {
            localStorage.setItem("token", response.data.token);
            console.log("ok");
            this.$router.push({
              name: "lora",
              params: { user: this.username }
            });
          }
        })
        .catch(function(errors) {
          let error = errors.response.data.errors;
          let mensaje = "Error no identificado";
          if (error.hasOwnProperty("username")) {
            mensaje = error.username[0];
          } else {
            mensaje = error.password[0];
          }
          Swal.fire({
            title: "Error",
            text: mensaje,
            icon: "error",
            confirmButtonText: "Ok"
          });
        });
    }
  }
};
</script>

Как мы можем видеть, когда конечная точка входа возвращает маркер, мы хотим получить pu sh другому 'lora ' маршрут.

Vue маршруты файл

import ContadorComponent from "./components/contador/ContadorComponent.vue";
import GatewayComponent from "./components/gateway/GatewayComponent.vue";
import HomeComponent from "./components/home/HomeComponent.vue";
import MainComponent from "./components/main/MainComponent.vue";

const routes = [{
    path: "/lora",
    name: "lora",
    component: MainComponent,
    props: true,
    children: [{
            path: "",
            name: "home",
            component: HomeComponent
        },
        {
            path: "contadores",
            name: "contadores",
            component: ContadorComponent
        },
        {
            path: "gateways",
            name: "gateways",
            component: GatewayComponent
        }
    ]
}];

const router = new VueRouter({
    mode: 'history',
    routes: routes
});


new Vue({
    vuetify: new Vuetify(),
    router
}).$mount("#app");

и Лора маршрут ( Основные компоненты t)

<template>
  <v-app id="app">
    <layoutDrawer></layoutDrawer>
    <layoutHeader></layoutHeader>
    <v-content>
      <router-view></router-view>
    </v-content>
    <layoutFooter></layoutFooter>
  </v-app>
</template>

<script>
import layoutHeader from "./partials/HeaderComponent.vue";
import layoutFooter from "./partials/FooterComponent.vue";
import layoutDrawer from "./partials/SidebarComponent.vue";
export default {
  props: {
    username: { type: String, default: "Invitado" }
  },
  components: {
    layoutHeader,
    layoutDrawer,
    layoutFooter
  }
};
</script>

Проблема: Если я go до http://127.0.0.1: 8000 / lora возвращает, что этот маршрут не существует. В файле маршрутов vue я объявляю его, поэтому не знаю, почему возвращает это. Возможно Laravel создать конфликт или что-то с маршрутами. В laravel файле маршрутов я тестирую этот код и работаю

Route::get('/test', function () {
    return view('home');
})->name('home');

Домашний вид - blade файл с Main Component. Возможно, что-то происходит с vue маршруты, которые проект не распознает и работает только Laravel маршруты ..

Вопрос: правильно ли объявляются маршруты vue? Кто-нибудь видит ошибку?

Ответы [ 3 ]

0 голосов
/ 23 марта 2020

Ммм, как сказал Эллисдод, это проблема порта / домена. Но на самом деле ... я не знаю, как решить это. Это мой первый проект mixin Laravel и Vue. У меня есть backend (Laravel) и frontend (Vue) в одном проекте без какого-либо разделения. Я прочитал здесь , что я могу это исправить, используя порты или другой домен ... но как? Могу ли я создать конфигурацию для запуска внешнего интерфейса на другом порту (изменение какого-либо файла)? Мне нужно изменить сервер (Apache), чтобы сделать это? Я искал какое-то руководство, чтобы объяснить, как развернуть приложения Laravel и Vue на сервере, но я не нашел никакого руководства.

0 голосов
/ 23 марта 2020

Я нашел частично решение. В Laravel маршрутах мне нужно поместить это

Route::get('{any?}', function () {
    return view('layout');
})->where('any', '.*');

Каждый раз, когда пользователь pu sh загружает на другую страницу Макет blade.

@extends('layouts.app')
@section('content')        
    <layout-component></layout-component>
 @endsection

Компонент макета

<template>
  <v-app id="app">
    <router-view></router-view>
  </v-app>
</template>
0 голосов
/ 22 марта 2020

Ваш клиент и сервер работают на одном и том же порту: http://127.0.0.1:8000.

URL для вашего маршрута lora должен быть примерно таким: http://127.0.0.1:8001/lora

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...