【求助】express下处理2个post请求导致出错,“Can't set headers after they are sent”
发布于 8 年前 作者 StevenOrg 2721 次浏览 来自 问答

逻辑说明:在接收post请求的页面处理两个任务:1. 渲染页面,2. 将post获得的信息传至sae数据库。 如果只处理任务1,没有问题,但是添加了任务2之后,会出现“Error: Can’t set headers after they are sent.”

var express= require(‘express’); var router = express.Router(); var request= require(‘request’);

var recordQuatation =function(param){ var postUrl=“http://sdli.sinaapp.com/”; request.post({url:postUrl,formData:param},function(error,response,body){ if(!error && response.statusCode==200){ console.log(‘send to sae mysql:’,body); }else{ console.log(‘send to sae mysql:’,body); } }); };

//任务1 router.post(’/’,function(req,res,next){ var bodyParse = req.body; recordQuatation(bodyParse); next(); });

//任务2 router.post(’/’,function(req,res){ var bodyParse = req.body; res.render(‘quat’,bodyParse); console.log(bodyParse); });

3 回复

论坛的搜索是不是没用过呢,这个问题我记得问过不止一次了,一般原因是重复发送响应,检查程序,是不是异常处理有问题,保证请求从头到尾不走岔路

加载中间件,应该使用的是router.use以及router.all,而不是get等方法… Express 4.x expressjs.com

在header前发送了内容

回到顶部