Problems encountered when the project is online?

29.项目上线遇到的问题?
a)路由拦截中,我需要访问实例的一些方法,但是上线之后this访问不到。定义router,
把this改为router就行。
b)路由拦截中,我需要触发一个action,但是拿不到store,因为异步。
解决方案:settimeout、$nextTick
c)上传图片的时候,pm2 --watch监听文件变动。每次上传都会发生文件变
动,文件一边动watch就会触发,pm2就会一直重启,服务就一直报错。
d)生产/开发的时候,线上/线下接口的判断。process_ENV_ENVNODE判断是开
发还是生产
e)项目上线时,有使用pm2做进程守护。
i.pm2 start不支持npm run build 的方式,可以自定义配置文件。
新建build.json文件,里面是{
    
    apps:{
    
    name:’build’,script:’npm run bu
ild’,watch: true // 开启监听}}。然后启动的时候pm2 start build.json即可。
Script里面可以写sheel命令
ii.可以在全局新建文件,mysql_bd.sh文件,里面定义好MySQL的启动命令,
下次就不需要那么麻烦了,里面的内容是#!/bin/sh mysql -uroot -p1234
f)单页面应用使用hash方式跳转路由,带#,不好看,解决办法
i.更改路由:mode改为history,实现去掉url中的 /#
ii.用history,刷新的时候会找不到页面,
可以用到connect-history-api-fallback中间件。
当用户在浏览器刷新的时候发送的是get请求,中间件用的就是这个原理,
把原本的req的url改变
iii.nginx服务做反向代理,实现去掉端口号。nginx配置upstream实现负载均衡,
如果nginx能代理多台服务器的话,可以配置多个服务器,多个服务器一起负担多
人的并发请求,实现了负载均衡。
全局nginx安装完成之后再etc里面,编辑nginx.conf文件,在里面插入 ups
tream,更改location,nginx -s stop 停止nginx

Guess you like

Origin blog.csdn.net/qq_45424679/article/details/112797663