不久前接手一个基于Nuxt.js的开发任务,Nuxt.js是基于Vue实现服务端渲染的框架,这在之前我还没有搞过,导致在进行数据请求时,相继出了跨域、blocked:mixed-centent、connect refused 等错误问题,经历一番查找之后终于了解该怎样处理。
Nuxt.js是SSR(服务端渲染),我在开发中在工程的目录找到baseURL后,将后端的IP添加后,就启动了项目的,但是之后页面一直是现实数据不全,这个问题卡了我很久,直至最后我发现一个问题,就是在工程的env.development.js中配置baseURL的key有两个,如下:
API_BASE_URL_CLIENT: 'https://192.168.12.149/api/v1',
API_BASE_URL_SSR: 'https://192.168.12.149/api/v1',
由于之前的不仔细,将两个key的value都指向了后端IP,这其实是不对的,在代码中,也可以轻松的发现,CLIENT的意思是客户端,其实不言而喻就知道其实在本地是有一个node服务器的,言外之意就是我们的服务器有两个,一个是后端服务,另一个是在本地起的服务,由于之前我的baseURL都指向了后端,服务端的请求错误,所以页面显示不完全。 所以,可见的仔细阅读他人代码有多么重要,即使没有注释,也要看代码的命名方式。
待将这个问题解决之后,项目就顺利的跑起来了。 期间遇到了connect rejected、或者是fail这样的请求,研究的问题有两种,一种其实后端是http,而你请求的是https,其次就是反向代理配置的不对了,下面给大家展示了配置反向代理的具体方法。
安装: @nuxtjs/axios & @nuxt/proxy
// env.development.js文件中:
API_BASE_URL_CLIENT: 'https://192.168.12.149/api/v1',
API_BASE_URL_SSR: 'https://192.168.12.149/api/v1',
// Base_URL配置的是指向本机的IP地址;
// nuxt.config.js 文件中
modules: [
'~/modules/sentry',
'nuxt-user-agent',
['cookie-universal-nuxt', { alias: 'cookies' }],
'@nuxtjs/markdownit',
'@nuxtjs/axios',
'@nuxtjs/proxy'
],
axios:{
proxy:true,
credentials: true,
prefix: "/api/v1"
},
proxy:{
'/api/v1':{
target:'http://192.168.12.71:8002',
// changeOrigin:true,
// pathRewrite:{
// '^/api/v1':'/api/v1'
// }
}
},