我收到错误:发送后无法设置标头

时间:2017-04-06 19:54:59

标签: node.js express

我是节点js的新手,我长时间堆叠这个错误。 有人可以帮我找到解决方案! 这是我写的代码!

router.get('/list',function (req, res, next)
{
   res.render('listaccounts.ejs',{mybalance:mybalance});
 });
 //accounts creation
router.post('/', function(req, res, next) {
var passphrase = req.body.passphrase;
var mybalance=web3.fromWei(web3.eth.getBalance(web3.eth.accounts[0]));
var accountAddress=web3_.personal.newAccount("passphrase",function(error,result){

   if(!error){
    console.log(result);
             }
   else {
    res.render('error.ejs');
       }
    });


res.redirect('/accounts/list');

  });

2 个答案:

答案 0 :(得分:1)

问题在于

    if(!error){
    console.log(result);
             }
   else {
    res.render('error.ejs');
       }
    });


res.redirect('/accounts/list');

当它捕获else语句时,它会渲染页面,然后你调用页面重定向,但是在res.render期间发送了标题。 简而言之,您无法同时渲染和重定向

答案 1 :(得分:1)

正如雅库布所说。你也可能有一个异步执行问题(你不知道将首先执行什么,重定向或渲染)。我想你可以简单地说:

var accountAddress=web3_.personal.newAccount("passphrase",function(error,result){

   if(!error){
    console.log(result);
    res.redirect('/accounts/list');
   }
   else {
    res.render('error.ejs');
   }
 });