devServer中的historyApiFallback配置(问题:初建webpack+react路由跳转页面Cannot GET /login)

文章讲述了在使用Webpack和React搭建项目时,初次添加路由遇到的问题,通过在devServer配置中添加`historyApiFallback`解决了页面无法正常展示。作者解释了该配置在单页应用和多页应用中的不同作用。
摘要由CSDN通过智能技术生成

webpack+react初步搭建项目后,首次添加路由进行路由跳转,发现页面不能正常展示。
请添加图片描述
此时webpack的配置是:

const path = require("path");
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports ={
    mode:"development",
    //  打包的入口文件
    entry:{
        main:"./main.tsx",
    },
    output:{
        path:path.resolve(__dirname,"dist")
    },
    plugins: [new HtmlWebpackPlugin({template:"./public/index.html",filename:"index.html"})],
    devServer: {
        static: path.join(__dirname, 'dist'),
        compress: true,
        port: 9000,
      },
    resolve: {
      extensions: ['.tsx', '.ts', '.js'], //省略后缀名
      alias: {
        '@': path.resolve(__dirname, 'src') // 添加别名配置
    }
    },
      //模块配置规则 loader配置
    module: {
        //第三方匹配规则(多个loader的话要写成数组)
        rules: [
            { 
              test: /\.js|jsx$/, 
              exclude: /node_modules/, 
              use: 'babel-loader' 
            },//在配置babel-loader的时候一定要加上exclude,否则项目会报错跑不起来
            {
                test: /\.ts|tsx$/,
                use: 'ts-loader',
            },
          {
              test: /\.scss$/,
              // 增加 'less-loader' ,注意顺序
              use: ['style-loader',  "css-loader", "sass-loader",]
            }
        ]
    }

}

此时注意devServer中的配置,在里面添加 historyApiFallback: true,然后重新npm run start启动项目,即可正常跳转展示页面。
这个配置项用于指定当路由不匹配时是否回退到 index.html 页面。

  • 如果你希望所有的路由都回退到 index.html 页面,即你的应用是一个单页应用(SPA)(已知react是单页面应用),则可以将 historyApiFallback 设置为 true。这样,无论用户访问的是哪个路由,都会返回 index.html,然后由前端路由来处理页面的显示和渲染。
  • 如果你的应用是一个多页应用,每个页面都有自己的独立路由,你希望每个路由都对应一个实际的页面文件,那么可以将 historyApiFallback 设置为 false。这样,当访问不存在的路由时,服务器将返回 404 错误页面,而不是回退到 index.html。
  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值