欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

nginx配合react-router、webpack打包实现二级目录访问

程序员文章站 2022-04-10 15:20:59
背景:由于域名有限,默认情况下使用webpack打包会占用根目录,导致无法部署其他项目,所以需要配置通过二级目录访问webpack配置// webpack.prod.js生产环境配置module.exports = { .... output:{ filename: '[name].bundle.js', path: path.join(__dirname, 'build'), //和服务器二级目录的文件名称必须一致, 前后的/一定要有...

背景:由于域名有限,默认情况下使用webpack打包会占用根目录,导致无法部署其他项目,所以需要配置通过二级目录访问

webpack配置

// webpack.prod.js生产环境配置
module.exports = {
    ....
    output:{
        filename: '[name].bundle.js',
        path: path.join(__dirname, 'build'),
        //和服务器二级目录的文件名称必须一致, 前后的/一定要有
        publicPath: '/Test/'
    }
};

// webpack.dev.js开发环境配置
//用于merge common和dev文件中的配置
const merge = require('webpack-merge');

module.exports = merge(common, {
    mode: 'development',
    ...
    devServer: {
        contentBase: './build',
        port: 3000,
        //和服务器二级目录的文件名称必须一致, 前后的/一定要有
        publicPath: '/Test/',
        historyApiFallback: {
            //用于解决开发环境中刷新404的问题
            index: '/Test/index.html'
        }
    }
});

react-router配置

//basename配置为服务器二级目录的文件名称
    ...
    <BrowerRouter basename='Test'> 
        <div>
            <Route ... />
            <Route ... />
        </div>
    </BrowerRouter>
    ...

配置完webpack和react-router后就可以正常打包了,一般如果不指定打包名字,打包出来的文件夹为build或者dist,如果没有配置打包出来的文件夹名称,打包后可以自行手动将文件夹重命名为Test,如果配置了需要配置为Test和最终要访问的二级目录的名字必须一致。

配置nginx

# nginx.conf
...
server{
    listen 80;
    server_name localhost;
    # Test 为nginx中二级目录的文件名称,注意Test后面没有/,只有前面有/
    localtion /Test {
        # 需要在/usr/local/nginx/html/路径下创建一个Test的文件夹,Test中放webpack打包出来的文件
        root /usr/local/nginx/html/;
        # 用于解决刷新404问题的配置
        try_files $uri /Test/index.html;
    }
}
...

nginx reload即可生效,最终访问地址就会变成域名/Test

本文地址:https://blog.csdn.net/gairuichan/article/details/107387760

相关标签: nginx react nginx