ele-admin项目配置打包部署跨域问题

108 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第24天,点击查看活动详情

生产环境打包

npm run build

npm run build:preview 演示环境包 会加载.env.preview文件

npm run build:report 在目录中生成一个report.html文件

 

部署到服务器

把dist里面打包好的文件放在nginx的html目录里,目录里就能访问了

但是nginx只能部署一个项目,可以配置nginx给项目分配一个端口或者绑定域名

 

配置域名

server_name demo.eleadmin.com

 

配置https的访问方式

rewrite ^ https://$http_host$request_uri? permanent;

 

//配置ssl证书

ssl_certificate cert/xxx.pem;

 

开启gzip功能

gzip可以压缩3-5倍左右,能够大幅度优化首屏加载的速度

ele-admin已经配置了打包生成的gzip文件,只需要给nginx增加如下配置

gzip on;

gzip_min_length 10k;

 

部署在子路径

打包后默认只能部署在服务器的子路径

1.在vue.config.js中配置

module.exports = {

publicPath: '/eleadmin'

}

2.在src/router.index.js中增加base

const router = new vueRouter({

routes,

mode: 'history',

base: process.env.BASE_URL

})

 

3.重新打包后部署,再访问可以带上配置的子路径了

 

部署再任意路径,换路径不用重新打包

1.把vue.config.js中的publicPath配置为空或者./

2.把src/router/index.js中的路由history模式改为hash模式

3.修改src/utils/page-tab-utils.js中退出登录logout方法

location.reload();

4.最后重新打包,就可以部署再任意子路径,如nginx的 www/demo tomact的 webapps/demo/

 

修改项目端口

devServer: {

port: 8888

}

 

解决跨问题

如果后端没有设置cros(跨域资源共享),可在前端解决跨域问题

proxy {

'/api': {

target: 'http: //localhost:8080'

}

}

!这种方式需要接口都有一个统一的前缀,这里/api就是所有接口都会有的前缀

然后修改.env .env.development重新运行项目

VUE_APP_API_BASE_URL = /api

 

api里面使用axios请求路径只用写/system/user,因为没有带其他的网址前缀,所以浏览器发起的请求是在同域名下,就不存在跨域,然后webpack会代理到实际接口

需要注意这只是解决开发时候的跨域问题,生产环境需要用nginx配置代理