webpack配置proxy小坑

907 阅读2分钟

在我们实际开发过程中,跨域问题是比较常见的,常见的跨域方法大家也都比较熟悉了。项目使用webpack打包时,我们也可以采用webpack的devServer提供的proxy进行跨域代理配置,相关配置文档和网上有各种的教程,也是比较简单的,但是实际在配置过程中,很多人都遇到了各种各样的问题,然而到最后发现,问题产生的原因其实非常简单,在此简单记录下。

在本地模拟下数据请求

//server.js
const express = require('express')
let app = express()
app.get('/api/user', (req, res)=>{ 
    res.json({msg: '我是返回数据'})
})
app.listen(3002)
console.log('listen 3002...')//index.js
var ajax = new XMLHttpRequest();
ajax.open('get', '/api/user');
ajax.send()
ajax.onreadystatechange = function(){
    if(ajax.readyState == 4 && ajax.status == 200){
        console.log(ajax.responseText)
    }
}

配置webpack的proxy代理

//webpack.config.js
......
devServer: {
    port: 8082,
    open: true,
    compress: true,
    proxy: {
        '/api': {
            target: 'http://localhost: 3002',
            changeOrigin: true, 
            pathRewrite: {
                '^/api': '/api'
            }
        }
    }}

配置完成,执行 npm run sever,打开页面,控制台很喜庆的红色出现了


回去查看代码逻辑,没有发现问题,只好向网络发起请求~

经过反复查询,产生此类问题的原因主要有以下几点:

(1)、target没有添加‘http://’

(2)、target配置的地址要能够访问,否则也会报错(404)

(3)、http代理有缓存问题(很多人遇到,没有太好的办法,可以尝试修改端口号)

(4)、node配置的服务,没有启动服务

(5)、手动再次执行一次npm run dev

(6)、相关端口被占用

根据各位前辈的经验,逐一排查问题,发现没有启动node服务,执行  node server.js启动服务,打包,重启服务,依旧报错!

各位前辈的坑都已经排查过了,没有发现问题;逻辑上也没有问题,那一定是代码书写上有踩坑了,经过大半天的检查,最终发现一个小问题(也是编码习惯问题),见图~


localhost的冒号后边有个空格,去掉空格,重启服务,数据成功请求!

这个问题产生也是个人习惯问题,平时输入冒号习惯性敲一下空格,对于一般js没有问题,但是对于url会有很大区别,填坑的同时也记录一下!