最终,问题是出在 vue-element-admin 模板中自带mock模块上。 request请求体是流式数据,如果在其他地方消费过,不做特殊处理的话,后面的应用就消费不到了。 前端通过node转发到后端应用,思考了半天,觉得只有mock才会影响到request请求体,所以去mock-server.js中去查看。

果然,在mock中有对于request请求体的处理逻辑,此处消费了requestBody,导致在node转发时,request请求体丢失。从而导致传到后端没有请求体,但是后端在解析的时候发现request请求头的content-length是有值的,就一直等待接收数据,与此同时,前端也在等待后端返回结果。当超过设置的请求时长后,前端等待超时,前端发EOF请求(具体为何会发EOF还需要进一步学习),后端收到以后,发现和预期的消息不一致,就报了EOF这个错误。 解决方式: 1. 将mock-server.js中的关于处理请求体的两行代码注释,重新启动项目即可。

2. 因为是实际的项目开发,直接将模板中关于mock的相关配置注释掉或者直接删除。 mock在 vue-element-admin 中有两个相关配置,分别在 main.js 和 vue.config.js 中,具体位置如下。 main.js中:

 vue.config.js中:

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐