Javascript Error[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头-错误

Javascript Error[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头-错误,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我正在尝试将页面重定向到另一个页面。当我第一次发送post请求时,它工作正常,但从第二次post请求时,它给了我这个错误 错误[ERR\u HTTP\u HEADERS\u SENT]:发送后无法设置头 给客户 每当我发送post请求时,它都会告诉我错误 这是代码 const find_doctor_and_update =(a , p) => { console.log(a) patients.findOneAndUpdate({name : a} , { $push :{ patien

我正在尝试将页面重定向到另一个页面。当我第一次发送post请求时,它工作正常,但从第二次post请求时,它给了我这个错误

错误[ERR\u HTTP\u HEADERS\u SENT]:发送后无法设置头 给客户

每当我发送post请求时,它都会告诉我错误

这是代码

const find_doctor_and_update =(a , p) => {
console.log(a)
patients.findOneAndUpdate({name : a} , { $push :{ patients : p } } , {new : true})
.then(data => {
        return data;
})
.catch(err => {
    console.log(err);
}) };


router.post('/upload', authorize,  upload.single('avatar'), (req, res) => {
    console.log(req.body)
    var pname = req.session.userid
    patient_detail.image_name = `${unique_id}-${req.file.originalname}`;
    patient_detail.pid = req.body.pid;
    patient_detail.name = req.body.name;
    patient_detail.age = req.body.age;
    patient_detail.bg = req.body.bg;
    prediction_file.stdin.write(`${unique_id}-${req.file.originalname}\n`);
    prediction_file.stdout.on('data', (output) => {
        if(output == 0){
            patient_detail.class = output;
            console.log('the output is here')

            find_doctor_and_update(pname, (patient_detail))
            .then(data => {
                console.log(data);
                return res.redirect(`/viewpatient/${patient_detail.pid}`);
                
            })
            .catch(err => {
                 //this is the line where i get the error second time when I do post request
                console.log(err);
            })
        }
        console.log(`stdout: ${output}`);
    }) 
})
module.exports = router;

我犯了错误。我试图将输出函数“prediction\u file.stdout”放在post方法中。由于它是循环的,即使我尝试返回,它也没有返回。

你能给我解释一下流程吗。。。我看到您没有返回任何承诺,但您仍然在使用“then”块进行“find\u doctor\u and\u update”。这怎么没有给你任何错误?是的,当我删除“then”块时,它显示了另一个错误,承诺没有得到处理。流程是->发送post请求时,它将身体存储在患者详细信息中。然后它转到子进程预测文件,当返回结果时,它转到“find_doctor_and_update”函数更新数据库,然后返回更新后的数据。如果函数中没有错误,那么它会重定向到另一个页面。这就是我不明白的原因。您在“查找医生和更新”中没有返回任何承诺,“然后”块对您有效。另外,每次你向邮递员发送邮件请求时,你都能看到“console.log(a)”中的控制台消息吗?“find_doctor_and_update”中的第一行?是的,我能看到