Azure Static Web App with Vue项目路由不工作

2vuwiymt  于 2023-04-21  发布在  Vue.js
关注(0)|答案(3)|浏览(142)

我有一个使用Azure静态Web应用程序部署的vue项目。项目包含路由器(历史模式)功能。它在本地工作得很好。但部署到Azure后,路径链接无法正常工作。例如,当我尝试mysite.com/about从浏览器导航访问www.example.com时,它返回404错误。
public文件夹中的staticwebapp.config.json文件:(我从微软文档中引用了这个例子)

{
    "routes": [
      {
        "route": "/*",
        "serve": "/index.html",
        "statusCode": 200
      }
    ]
  }

我的路由器js文件:

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/about',
    name: 'About',
    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
  },
  {
    path: '/api',
    name: 'Api',
    component: () => import('../views/Api.vue')
  }
]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

export default router
5q4ezhmt

5q4ezhmt1#

正如其他人提到的,adding "routes.json" to your public folder is deprecated。然而,如果你是新来的,看看以前的答案,你会对新的做法感到更糟。
您要查找的答案是Azure静态Web应用程序配置文件。该文件应放置在名为staticwebapp.config.json的应用程序的根目录下。下面是文档中的一个示例。
对于单页面应用程序,您最感兴趣的是捕获服务器“不知道”的路由以及应该排除哪些路径。
下面是一个Vue应用程序的示例文件:

  • (如果您没有应该以特殊方式运行的路由,则不必指定它们)*
{
  "globalHeaders": {
    "content-security-policy": "default-src https: 'unsafe-eval' 'unsafe-inline'; object-src 'none'"
  },
  "navigationFallback": {
    "rewrite": "/index.html",
    "exclude": ["/img/*.{png,jpg,gif,webp}", "/css/*"]
  },
  "mimeTypes": {
    "custom": "text/html"
  }
}
3lxsmp7m

3lxsmp7m2#

public目录中创建一个名为routes.json的文件,并添加以下内容:

{
  "routes": [
    {
      "route": "/*",
      "serve": "/index.html",
      "statusCode": 200
    }
  ]
}

文件

deikduxw

deikduxw3#

刚刚添加了navigationFallback属性,现在它工作了!!!

{
        "routes": [
          {
            "route": "/*",
            "serve": "/index.html",
            "statusCode": 200
          }
          
        ], 
    
         "navigationFallback": {
              "rewrite": "/index.html",
              "exclude": ["/images/*.{png,jpg,gif}", "/css/*"]
            }
           
      }

相关问题