1. 现象
从/a路由/test路由可以正常跳转,但是刷新/test路由报错,SyntaxError: Unexpected token '' -> chunk-libs.a879c80a.js:2:2),但是把路径名改成别的比如/demo就可以,
2. 原因
proxy和路由名冲突,webpack devServer配置了代理,拦截了test路由, 页面url请求也属于get请求:
devServer: {
proxy: {
'/test': {
target: 'http://localhost:3000',
changeOrigin: true,
},
}
}
3. 解决
自定义代理规则:
devServer: {
proxy: {
'/test': {
target: 'http://localhost:3000',
bypass: function(req, res, proxyOptions) {
if (req.headers.accept.indexOf('html') !== -1) {
console.log('Skipping proxy for browser request.');
return '/index.html';
}
}
}
}
}
有时你不想代理所有的请求。可以基于一个函数的返回值绕过代理。 在函数中你可以访问请求体、响应体和代理选项。必须返回 false 或路径,来跳过代理请求。 例如:对于浏览器请求,你想要提供一个 HTML 页面,但是对于 API 请求则保持代理。你可以这样做。