In meinem Projekt verwende ich Vue 3.2.36 + Vite 2.9.9 + VueRouter 4.1.3
Ich verwende npm run dev
, um den Entwicklungsserver auszuführen.
Meine Routendefinition:
routes: [ { path: '/', component: Home, }, { path: '/about', component: () => import('@/views/About.vue'), }, { path: '/user-details/:login', name: 'userDetails', component: () => import('@/views/User.vue'), }, { path: '/:pathMatch(.*)*', component: NotFound, } ],
Wenn ich router.push({name: 'userDetails', params: {login: 'john.smith'}})
以编程方式导航时,userDetails
verwende, wird die Seite/Komponente korrekt angezeigt.
Aber wenn mein Browser neu lädt, gibt der Entwicklungsserver 404 zurück und die NotFound
-Komponente wird nicht angezeigt.
Chrome:
FF:
Arbeitsbeispiel: hier
Ich habe das Problem auf Vite beschränkt. Mit der Vue-CLI funktioniert alles einwandfrei.
Mein vite.config.js
:
import loadVersion from 'vite-plugin-package-version'; import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; export default defineConfig(() => { return { server: { port: 8080, }, plugins: [vue(), loadVersion()], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, envDir: './src/configuration', css: { preprocessorOptions: { scss: { additionalData: '@import "@/assets/scss/_variables.scss";', }, }, }, }; });
Meins überprüftindex.html
:
Ich habe die Dokumentation zum historischen Modus von vue-router
历史模式文档,并在警告部分中指出,如果未找到路由,路由器应默认为 index.html
vue-router
我的 Web 应用程序位于 Azure DevOps 上,但位于 Linux 上 对于 Linux Web 应用程序,您必须添加下一个命令才能在启动时运行 Web 应用程序命令。这对我有用。
您可以在本文中查看更多内容 Azure webapp linux 上的 React 应用
是的,它知道 Vite 中的bug。
解决方案是在 Vite 中使用 插件,如所述 此处
对我来说,这是不行的。我要切换到 Vue CLI。
不想和这种小妖精打交道。
几年后我会再次访问 Vite。