2017-04-06 4 views
0

Ich bin neu in Knoten js und ich stapeln mit diesem Fehler seit langem. Kann mir jemand helfen, eine Lösung zu finden! hier ist der Code, den ich geschrieben habe!Ich bekomme Fehler: Kann Header nicht festlegen, nachdem sie gesendet werden

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'); 

    }); 
+0

Das Problem ist genau so, wie es sagt. Sie haben die Header bereits gesendet, Sie können sie jetzt nicht ändern. Sie müssen die Header ändern, bevor Sie _any_ content an den Server senden, da die Header eines der ersten Dinge über die Leitung sind. –

Antwort

1

Genau wie Jakub sagte. Außerdem haben Sie ein asynchrones Ausführungsproblem (Sie wissen nicht, was zuerst ausgeführt wird, die Weiterleitung oder das Rendern). Ich denke du könntest einfach:

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

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

Das Problem liegt in

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


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

Wenn es sonst Anweisung fangen, tut es die Seite machen, dann rufen Sie Seite umleiten, aber Header wurden während res.render gesendet. Kurz gesagt, Sie können nicht gleichzeitig rendern und umleiten

Verwandte Themen