【问题标题】:vue-router history mode on mac (localhost) throwing error on direct accessmac(localhost)上的vue-router历史模式在直接访问时抛出错误
【发布时间】:2019-05-31 03:31:23
【问题描述】:

我在 localhost 开发中测试 vue-router 的历史模式,当我尝试直接访问 URL:http://localhost:8080/map/2 时出现错误。当我通过某种 $router.push 访问 URL 时,它的行为正确。我想知道是什么导致了这个问题。

路由器/index.js

import Vue from "vue"
import Router from "vue-router"

const PublicMap = () => import("@/components/PublicMap/index.vue")

Vue.use(Router)

var routes = [
    {
        component: PublicMap,
        name: "map",
        path: "/map/:_id",
    },
]

export default new Router({
    routes,
    mode:
        "history"
})

错误:

Uncaught SyntaxError: Unexpected token <

【问题讨论】:

  • “直接访问”是否意味着您在地址栏中手动输入了 URL?您也可以在此处发布PublicMap 组件。
  • 这应该和你的服务器配置更相关。你应该让它总是返回你的 index.html
  • @Slim 是的,我不确定 Vue 的哪个部分可以做到这一点。我正在使用 Vue-cli3,他们说不要修改 historyApiFallback
  • 你能发布完整的错误吗?
  • 你的应用是 PWA 吗?也许这是导致错误的原因,stackoverflow.com/questions/55155359/…,请参阅这篇文章中的答案

标签: javascript macos vue.js vuejs2 vue-cli-3


【解决方案1】:

当您收到Uncaught SyntaxError: Unexpected token &lt; 时,通常意味着您的转译器在未设置转译的文件中命中了元素标签“

使用Vue时,这通常是xyz.vue单文件组件库中的&lt;script&gt;标签。

如果您使用 PWA,则可能会缓存文件或设置。我会先尝试一个没有访问过该页面的不同浏览器,看看它是否是一个缓存问题。如果它可以在其他浏览器中运行,请尝试hard refresh,或为页面的网络应用取消注册服务工作者。

如果在其他浏览器中失败,我会查看您的 webpack 和/或 vue 配置文件。

【讨论】:

  • 它只在历史模式下发生。哈希模式工作得很好。
  • 你用什么来提供网址?
  • 只是本地主机。文档说它应该在没有任何修改的情况下在哈希和历史模式下工作。
  • 但是您使用的是 vue-cli 服务器、webpack-dev-server 等。什么应用程序在为您的内容提供服务?您不能通过仅打开驱动器上的文件来使用历史模式。需要有一个备用网址。
  • 只使用 vue-cli3 并运行 npm start。所以基本上,如果我通过RouterLink html 标记重定向历史路由,但如果它直接访问它(即通过 url 栏打孔)则不起作用
猜你喜欢
  • 2018-07-07
  • 2020-01-08
  • 2018-07-29
  • 2020-10-05
  • 2018-11-07
  • 2021-09-27
  • 2020-06-26
  • 2017-05-23
  • 2018-03-21
相关资源
最近更新 更多