nginx配合react-router、webpack打包实现二级目录访问
程序员文章站
2022-07-03 10:26:16
背景:由于域名有限,默认情况下使用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
上一篇: 怎么做好互联网产品的商业价值
下一篇: 知乎社区类型的网站还能吸引用户吗?