laravel - Vue - Vue 路由不存在
问题描述
我在Laravel + Vue有一个项目。在 Laravel 中,我有一些用于创建端点和起始页的路线。
Laravel 路线
Route::get('/', 'Auth\LoginController@showLoginForm');
Route::post('/login', 'Auth\LoginController@login');
Auth::routes();
Route::resource('gateways', 'GatewayController');
Route::resource('contadores', 'ContadorController');
'/'路由到带有Login Component的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>
正如我们所看到的,当登录端点返回令牌时,我们想要推送到其他“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");
和lora路线 ( Main Componen 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>
问题:如果我去http://127.0.0.1:8000/lora返回这条路线不存在。在 vue 路由文件中我声明了它,所以我不知道为什么会返回它。也许 Laravel 会产生冲突或与路线有关的东西。在 laravel 路由文件中,我测试了这段代码并且可以工作
Route::get('/test', function () {
return view('home');
})->name('home');
视图主页是带有主要组件的刀片文件。也许项目无法识别并且仅适用于 Laravel 路由的 vue 路由发生了一些事情。
问题:vue 路由是否正确声明?有人看到一些错误吗?
解决方案
您的客户端和服务器在同一个端口上运行:http://127.0.0.1:8000
.
您的 lora 路线的网址应该类似于http://127.0.0.1:8001/lora
推荐阅读
- c# - 正则表达式匹配点分隔列表,允许一个或多个单词
- android - 更新已安装的 android 应用程序中的资源
- python - pyserial - 我无法从端口读取
- python - 事件 webhook n Python/Django。授权错误
- c++ - 提升数据驱动的测试输出:“断言发生在以下上下文中”
- mysql - 使用typo3扩展通量9.0.1更新colPos
- authentication - HTTPS 服务器可以故意拒绝未对所述服务器进行身份验证的客户端吗?
- kubernetes - kubectl 应用 -f
等效于fabric8 java api - java - 如何通过 application.properties (factory.setBatchListener(true)) 激活 KafkaBatchListener
- c# - 如何使用上下文 SQL DB 和 DB2 在 Entity Framework 5 中实现单个事务