更新:

事实证明,这是Windows上Vue网页包模板中的一个漏洞,很快就会修复


问题:

我启动了一个新的Vue项目,安装了vue init webpack projectName个,现在我刷新页面时得到了:Cannot GET /path(在本地主机上).

例如,如果我转到/contact,我会看到页面的内容,但只要我点击刷新,我就会看到Cannot GET /contact

更重要的是,你现在不能简单地在地址栏中手动输入路由,你会得到同样的错误.


  • 我有mode: 'history'
  • 我在localhost(npm run dev)上看到了这一点

几天前它确实工作正常.我现在该怎么做?

互联网上的所有答案都不是有用的(也许我没有正确地应用它们)


索引.js

import Vue from 'vue'
import Router from 'vue-router'
import Vuetify from 'vuetify'
import 'vuetify/dist/vuetify.min.css'
import Home from '@/components/Home'
import Contact from '@/components/Contact'

Vue.use(Router)
Vue.use(Vuetify)

export default new Router({
  mode: 'history',
  routes: [
    {
      path: '/',
      name: 'Home',
      component: Home
    },
    {
      path: '/contact',
      name: 'Contact',
      component: Contact
    }
  ]
})

正因为如此,我现在无法让这个重定向工作:

{
  path: '*',
  redirect: '/'
}

我也犯了同样的错误.

所以我想这可能是Vue网页包的模板错误,我注意到webpack.dev.conf.js现在有点不同,现在有这样的行:

devServer: {
    clientLogLevel: 'warning',
    historyApiFallback: {
      rewrites: [
        { from: /.*/, to: path.join(config.dev.assetsPublicPath, 'index.html') },
      ],
    },
    [...]

我认为这与此有关.

推荐答案

在你的webpack.dev.conf.js中,在historyApiFallback: {...}上加historyApiFallback: true.在github上可以找到它的配置发生了一些变化.

EDIT:

try 在第"dev": "webpack-dev-server --inline --history-api-fallback --progress --config build/webpack.dev.conf.js"行的package.json中添加--history-api-fallback,然后再次运行npm install.或者try 使用该参数创建新项目.

请注意,该行上缺少的--history-api-fallback可能是导致问题的原因.希望这能解决你的问题.这是我解决错误的唯一方法.

Vue.js相关问答推荐

VueI18n 无法读取或更改组合 API 中的区域设置

vuejs3 youtube-plugin YT 未定义控制台错误

VueJS3 - 在 for 循环中获取元素的句柄

Nuxt3-Vue中的useRoute和useRouter有什么区别

已分配计算(computed)属性,但它没有设置器

在 dom 内移动 Vue 组件?

vuejs:将props传递给javascript中的组件?

为什么组件在 v-if 下没有被销毁

Laravel Vue - 如何让 vue 在公共文件夹中查找图像

为什么当我 Select 第二个输入框时音译transliteration不起作用?

W3C 验证和 Vue 的 HTML 绑定语法

如何在 Vue.js 中获取组件元素的 offsetHeight?

如何让 Vue (vue cli 3) 正确处理 GraphQL 文件?

Vuex - 何时从 http 服务器加载/初始化存储数据

Vuejs 3 从子组件向父组件发出事件

找不到模块 'babel-core' 但已安装 @babel/core

Bootstrap-vue:如何将数据传递给模态?

Axios 请求拦截器在我的 vue 应用程序中不起作用

如何在 VeeValidate 中自定义错误信息(字段名称)?

使用 vuex-persistedstate 仅使一个模块持久化