vue-router的history模式页面not found?

发布于 2022-09-06 10:44:55 字数 2688 浏览 10 评论 0

首页可以显示,再往下的子页就not found了

dev-server.js

import Koa from 'koa'
import path from 'path'
import webpack from 'webpack'
import serve from 'koa-static'
import KoaWebpackDevMiddleware from 'koa-webpack-dev-middleware'
import KoaWebpackHotMiddleware from 'koa-webpack-hot-middleware'
import history from 'koa-connect-history-api-fallback'

import devConf from './webpack.dev.conf'
import config from './../config'

import opn from 'opn'

const webpackConfig = devConf
const autoOpenBrowser = !!config.dev.autoOpenBrowser

const koa = new Koa()
const compiler = webpack(webpackConfig)

koa.use(KoaWebpackDevMiddleware(compiler, {
    publicPath: config.dev.publicPath,
    quiet: true
}))
koa.use(KoaWebpackHotMiddleware(compiler))
koa.use(history({
    rewrites: [
        {
            from: /^\/.*$/,
            to: '/'
        }
    ]
}))
koa.use(serve(path.join(__dirname, '/dist/'), { extensions: ['html'] }))

let _resolve
const readyPromise = new Promise(resolve => {
    _resolve = resolve
})

if (autoOpenBrowser) {
    opn('http://localhost:8001')
}

const server = koa.listen(8001, () => {
    console.log('app listen at 8001')
})

export default {
    ready: readyPromise,
    close: () => {
        server.close()
    }
}

router.js

import Vue from 'vue'
import Router from 'vue-router'
import Landing from './landing'

let routerArr = [
    Landing
]

let routes = []

routerArr.map(route => {
    routes = routes.concat(route)
})

const None = () => import(
    /* webpackChunkName: 'None' */
    '../views/none.vue'
)

const Index = () => import(
    /* webpackChunkName: 'Index' */
    '../views/index.vue'
)

const Login = () => import(
    /* webpackChunkName: 'Index' */
    '../views/login.vue'
)

Vue.use(Router)

routes.push(
    {
        path: '*',
        name: '404',
        component: None
    },
    {
        path: '/',
        name: 'Index',
        component: Index
    },
    {
        path: '/login',
        name: 'Login',
        component: Login
    }
)

const router = new Router({
    mode: 'history',
    routes: routes
})
console.log(router, routes)
router.beforeEach((to, from, next) => {
    next()
})

router.afterEach(route => {

})

export default router

跑起来之后,浏览器直接输地址访问login页就报not found。我按照vue-router官网文档加了koa-connect-history-api-fallback也不行。现在只是本地开发环境,还没涉及后台,应该后台暂时不需要配置吧?求指导。。。

----------fixed---------
参考链接:https://www.jianshu.com/p/c68...
koa.use(history())要放在所有中间件之前,否则页面先刷新了,history就没用了。原来还是和koa的架构有关的。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清醇 2022-09-13 10:44:55

不知道,没出现这种问题,你的开发环境是自己搭建的吗?
我看老版本的vue-cli webpack模板里是这么配的
app.use(require('connect-history-api-fallback')()),不过这个app是express的。
新版本的模板里没找到哪里有配置,但是能正确跳转。

腻橙味 2022-09-13 10:44:55
{
        path: '*',
        name: '404',
        component: None
    },
    

这个要放最后一个路由,不然第一个匹配到的就是他

岁吢 2022-09-13 10:44:55

你是如何输入的路径? locahost:8080/login ?这样?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文