【发布时间】:2019-07-07 15:51:30
【问题描述】:
我有一个 Vue.js 项目,我在其中配置了一个 webpack 开发服务器,将所有对 UI 的请求代理到我的后端服务器。这是 vue.config.js 的相关部分:
devServer: {
contentBase: PATHS.build,
port: 9000,
https: false,
hot: true,
progress: true,
inline: true,
watchContentBase: true,
proxy: {
'^/': {
target: 'http://127.0.0.1:8089',
secure: false
},
}
},
我注意到,如果来自 http://127.0.0.1:8089 的 HTTP 响应代码不是 2xx,那么代理将失败并出现以下错误:
代理错误:无法将请求 /api/test 从 localhost:9000 代理到 http://127.0.0.1:8089。 有关详细信息,请参阅 https://nodejs.org/api/errors.html#errors_common_system_errors (HPE_INVALID_CHUNK_SIZE)。
这还会导致从请求到 localhost:9000 的 HTTP 响应代码对于任何错误都为 500,并且有关服务器端出现问题的所有信息都丢失了。这是有问题的,因为我希望能够从错误响应中提取信息以显示给用户。
我知道这是可能的,因为我让它在一个较旧的 Angular 项目上工作,我认为该项目使用的是 Webpack 3(我现在使用的是 Webpack 4)。我尝试从该项目复制所有开发服务器配置,但它似乎在这里不起作用!
编辑:我错了。代理错误不会发生在每个错误响应上,而只会发生在多部分文件上传请求中。尽管很难查明原因,但仍然无法在一个较小的示例中重现此问题以放在 github 上。
【问题讨论】:
-
在 github 上创建一个 repo 以重现您的问题,人们可以检查它以查看问题所在。
-
您应该指定更多信息。你使用的是什么版本的 Webpack/Vue.js?在 dev-server 之前是否有一些 webserver 处理请求,例如 apache 或 nginx?带有代码的仓库也会有所帮助。
-
@Legends 今天我花了一些时间试图整理一个失败的最小示例。不幸的是,无法分享原始项目。令人愤怒的是,我无法重现这个问题,所以我将不得不找出我所做的不同之处!
标签: vue.js webpack webpack-dev-server http-proxy