vue怎么嵌套多级路由页面打不开_使用 vue-router 实现嵌套路由,在二级路由下刷新页面无法加载打包的bundle文件...

在Vue+Webpack项目中,使用vue-router的history模式遇到嵌套路由刷新页面时,bundle文件加载失败的问题。错误表现为请求的app.bundle.js路径不正确。通过检查webpack配置和路由设置,发现可能是HtmlWebpackPlugin添加app.bundle.js引用时路径设置不当。解决方案可能涉及调整webpack配置中output.path或HtmlWebpackPlugin中模板引用资源的方式,确保刷新后能正确找到静态资源。
摘要由CSDN通过智能技术生成

问题描述

在 vue+webpack 项目中使用 vue-router 的 history 模式实现嵌套路由,在二级路由下刷新页面后无法加载打包后的 bundle 文件。

报的错误如上图。查看 network 可以看到获取 app.bundle.js 文件的路径不对

正确的请求应该是 localhost:8080/app.bundle.js。

相关代码

贴一下配置文件。

这是 webpack.common.js,webpack 的基本配置文件。

module.exports = {

entry: {

app: [ './src/main.js' ]

},

output: {

filename: '[name].bundle.js',

chunkFilename: '[name].bundle.js',

path: path.resolve(__dirname, 'dist')

},

resolve: {

alias: {

'@': path.resolve(__dirname, 'src'),

vue$: 'vue/dist/vue.runtime.esm.js'

},

extensions: [

'.js',

'.jsx',

'.vue',

'.json'

],

modules: [ 'node_modules' ]

},

plugins: [

new webpack.DefinePlugin({

'process.env.BASE_URL': '"/"'

}),

new CleanWebpackPlugin([ 'dist' ]),

new HtmlWebpackPlugin({

template: path.resolve(__dirname, 'public/index.html'),

favicon: path.resolve(__dirname, 'public/favicon.ico')

}),

// 将定义的其它规则复制并应用到 .vue 文件里相应语言块

new VueLoaderPlugin(),

new ManifestPlugin()

],

module: {

noParse: /^(vue|vue-router|vuex|vuex-router-sync)$/,

rules: [

{

test: /\.vue$/,

loader: 'vue-loader'

},

{

test: /\.(png|jpe?g|gif|webp)(\?.*)?$/,

loader: 'file-loader'

},

{

test: /\.(woff|woff2|eot|ttf|otf)$/,

loader: 'file-loader'

},

{

test: /\.js$/,

exclude: /node_modules/,

loader: 'babel-loader'

},

{

test: /\.css$/,

use: [

'vue-style-loader',

'css-loader'

]

},

{

test: /\.scss$/,

loader: 'vue-style-loader!css-loader!sass-loader'

}

]

}

};

这是定义的路由:

export default new Router({

mode: 'history',

routes: [

{

path: '/',

redirect: to => {

return 'login'

}

},

{

path: '/login',

name: 'login',

component: Login

},

{

path: '/main',

name: 'main',

component: Layout,

children: [

{

path: 'companys',

name: 'companys',

component: Companys

},

{

path: 'users',

name: 'users',

component: Users

}

]

}

]

})

你期待的结果是什么?实际看到的错误信息又是什么?

因为我不是直接在 index.html 里引用 app.bundle.js 文件的,而是用 HtmlWebpackPlugin 将 index.html 作为模板,在输出的时候添加引用 app.bundle.js 文件的标签,我感觉是这个引用资源的路径出错了, src="app.bundle.js 应该是相对路径,所以这个时候会找不到文件,有没有办法改变这个路径呢?如果我的想法是错得话,那有什么方法能让嵌套路由页面刷新后仍然能够正常显示呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值