Vue.js路由器基本设置在开发模式中断开链接

tquggr8v  于 2022-11-17  发布在  Vue.js
关注(0)|答案(1)|浏览(144)

我有一个简单的vue-cli项目,使用vue-router。在默认配置下一切都工作正常,但我需要/想将路由器基础更改为/app/,这会中断所有链接。
当我更改路由器的基础并运行开发模式(vue-cli-service serve)时,我可以访问根路由,但所有链接都不工作。当我单击指向/app/groups的链接时,控制台抛出未找到错误:

app.js:460          GET http://localhost:8080/app/js/src_views_AssetGroupView_vue.js net::ERR_ABORTED 404 (Not Found)

我的路由器:

const router = createRouter({
  history: createWebHistory('/app/'),
  routes
})

我的路线:

const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
  },
  {
    path: '/login',
    name: 'login',
    component: LoginView
  },
  {
    path: '/register',
    name: 'register',
    component: LoginView
  },
  {
    path: '/groups',
    name: 'groups',
    component: () => import('src/views/AssetGroupView.vue')
  }
]

版本:

"vue": "^3.2.39",
"vue-router": "^4.1.5",

我的版本配置js:

const { defineConfig } = require('@vue/cli-service')

module.exports = defineConfig({
  // Used for Django Deployment in Build
  publicPath: process.env.NODE_ENV === 'production' ? '/static/spa' : '', 
  outputDir: '../static/spa', 
  indexPath: '../../templates/index.html', 
})

我希望在serve模式下也能改变路由器的基础,但是由于某些原因,所有的链接都试图请求一个不存在的资源。
我有点不明白为什么当我把基础改为“”时它能工作,而且在开发构建中它也能正常工作。有什么想法如何修复这种行为吗?
谢谢

fbcarpbf

fbcarpbf1#

我自己发现的。
由于某种原因,更改路由器基本路径也会将内部JS链路的基本路径从js更改为app/js
因此,对于开发模式,还必须更改vue.config.jspublicPath变量。

[...]
module.exports = defineConfig({

  publicPath: process.env.NODE_ENV === 'production' ? '/static/spa' : '/app/',

[...]

相关问题