首页 > 解决方案 > 如何在 Express.js 中向客户端发送响应之后/时重定向到某个路由?

问题描述

我是 Express.JS 的初学者,在路由重定向方面遇到问题。我想要的只是向用户显示一条消息“您的数据已成功注册。”然后在一段时间后,我想再次将它们重定向到表单页面。但几乎没有错误。

这是一个代码,我在文本文件中写入数据,然后在显示消息后,我想重定向到 /form 路由。

router.use('/form',(req,res)=>{
    console.log("form is loaded ");
    res.sendFile(path.join(rootDir,'views','form.html'));
}); 



router.post('/submit',(req,res)=>{
    const data=()=>{
        const time=Date();
        const firstName=req.body.firstName;
        const lastName=req.body.LastName;
        const email= req.body.email;
        const address=req.body.address;
        const state=req.body.state;
        const phone= req.body.phone;
        const pinCode= req.body.pinCode;
        let data=time+"\n"+'    Name   --->    '+firstName+" "+lastName+'\n';
        data+='    E-mail   --->    '+email+'\n';
        data+='    Phone  --->    '+phone+'\n';
        data+='    Address  --->    '+address+'\n';
        data+='    State  --->    '+state+' - '+pinCode+'\n\n';
        return data;
    }
    // console.log(firstName,lastName,email,phone,address,state,pinCode);


    fs.appendFile(dbFile,data(),(error)=>{
        console.log("Data added to database");
    });

   
    res.send('Your data is registered successfully.');
    
    setInterval(()=>{res.redirect('/form');}, 3000);
});

在这种情况下,我收到以下错误:

    throw new ERR_HTTP_HEADERS_SENT('set');
    ^

Error [ERR_HTTP_HEADERS_SENT]: **Cannot set headers after they are sent to the client**
    at ServerResponse.setHeader (_http_outgoing.js:530:11)
    at ServerResponse.header (/home/infogirdinformatics/Desktop/Nilesh/IG/Express.js/Day 15/Task 3/node_modules/express/lib/response.js:771:10)

请建议我任何方式或解决方案。感谢您的帮助和时间。

标签: javascriptnode.jsexpressmean-stack

解决方案


发送响应后不能发送 HTTP 重定向,所以我可能会这样做:

res.send(`
  <html>
    <head>
      <meta http-equiv="refresh" content="3;url=/form" />
    </head>
    <body>Your data is registered successfully.</body>
  </html>
`);

并使用HTML 重定向


推荐阅读