http POST响应后,发送到客户端后无法设置标头

Posted

技术标签:

【中文标题】http POST响应后,发送到客户端后无法设置标头【英文标题】:After http POST response, cannot set headers after they are sent to the client 【发布时间】:2020-09-04 22:52:00 【问题描述】:

首先我为打字错误道歉,我是巴西人

我访问了下面的问题,但它并没有帮助我解决我的问题

ERR_HTTP_HEADERS_SENT: Cannot set headers after they are sent to the client

我有一个从路由localhost:4000/returnvalues 调用的方法 在第一次请求时,它按预期工作

但在下一个,它返回以下错误

_http_outgoing.js:526
throw new ERR_HTTP_HEADERS_SENT('set'); ^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

我的代码

module.exports = app => 

const formidable = require('formidable')
const path = require('path')
const folder = path.join("C:/Users/Rafael/Desktop", 'files')
const fs = require('fs')
var form = new formidable.IncomingForm(
    uploadDir: folder,
    keepExtensions: true
)

const returnvalues = async (req, res) => 
    form.parse(req, (_, fields, files) => 
        app.api.readFile.readFiles(files.Teste.path).then(values => 
            res.status(200).send(values)
           )
       )
   

  return  returnvalues 

我尝试使用失败

return res.status(200).send(values)

此方法返回一个从 Excel 电子表格中读取的对象

error from the server my code

【问题讨论】:

【参考方案1】:

我遇到了和你一样的错误。 如果你把你的表单变量

var form = new formidable.IncomingForm(
    uploadDir: folder,
    keepExtensions: true
)

在您的 returnvalues 函数中,它应该可以工作。

【讨论】:

以上是关于http POST响应后,发送到客户端后无法设置标头的主要内容,如果未能解决你的问题,请参考以下文章

使用渲染器发送到客户端后,无法设置标题

Express: [ERR_HTTP_HEADERS_SENT]: 发送到客户端后无法设置标头

发送 HTTP 响应后继续 PHP 执行

NodeJS "发送到客户端 NodeJS 后无法设置标头"

ERR_HTTP_HEADERS_SENT - Express:标头在发送到客户端后无法设置,我该如何解决这个错误?

Node.js 发送到客户端后无法设置标头