我有一个简单的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
模式下也能改变路由器的基础,但是由于某些原因,所有的链接都试图请求一个不存在的资源。
我有点不明白为什么当我把基础改为“”时它能工作,而且在开发构建中它也能正常工作。有什么想法如何修复这种行为吗?
谢谢
1条答案
按热度按时间fbcarpbf1#
我自己发现的。
由于某种原因,更改路由器基本路径也会将内部JS链路的基本路径从
js
更改为app/js
。因此,对于开发模式,还必须更改
vue.config.js
publicPath
变量。