# 如何部署ReactJs打包后的build目录文件
# 问题
对于ReactJs
开发,通过npm run build
打包完后,会生成静态文件到目录build
中去。这个build
就是优化瘦身后的文件,而不用像整个React
项目那么大,很多依赖包。关键是,这个static
文件目录build
生成后,我们怎么用呢?怎么部署让别人看到?
# 方案
React
提供了一种方案,通过安装serve
来部署,但需要有node.js
的环境。
$ npm install -g serve
$ serve -s build
默认端口为5000
,可以改变端口:
$ serve -s build -l 4000
当然,我们需要部署的环境很可能没有node.js
,其实通过nginx
,apache
,tomcat
,springboot
等都可以部署。因为build
里面就是一些静态网页资源,有Web
服务器就可以了。
以nginx
为例,只要把build
目录里面的所有资源文件,放在nginx
的web-root
目录就行了。
需要注意的是,如果访问nginx
时出现403 Forbidden
,很可能是权限问题。需要对目录进行授权:
$ chmod 755 -R web-root
然后尝试重启nginx
即可。
# 子路径404问题
发现直接访问http://domain/aaa/bbb
会报404
错误,而从根目录点击访问则可以。使用了React-Router
的BrowserHistory
模式,需要在Nginx
配置:
location / {
try_files $uri $uri/ /index.html;
}
有了以上配置后,问题便解决了。可参考:nginx 上部署 react 项目 (opens new window)。