逻辑说明:在接收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); });
论坛的搜索是不是没用过呢,这个问题我记得问过不止一次了,一般原因是重复发送响应,检查程序,是不是异常处理有问题,保证请求从头到尾不走岔路
加载中间件,应该使用的是router.use
以及router.all
,而不是get
等方法…
Express 4.x expressjs.com
在header前发送了内容