2017-04-06 8 views
0

私はノードjsで新しく、このエラーで長時間スタックします。 誰かが解決策を見つける手助けをすることができますか? ここに私が書いたコードがあります!それはelse文をキャッチするとエラーが発生しました:送信後にヘッダーを設定できません

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

問題はそれが言う通りです。既にヘッダーを送信しています。変更することはできません。ヘッダーは、最初のものの1つであるため、サーバーに_any_コンテンツを送信する前にヘッダーを変更する必要があります。 –

答えて

1

Jakubと同じように、また、matyには非同期の実行の問題があります(最初に何が実行されるかわからない、リダイレクトまたはレンダリング)。私はあなたが簡単にできると思う:

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

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

問題が

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


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

に産む、それは、あなたはページのリダイレクトを呼び出して、ページをレンダリングしますが、ヘッダがres.renderの間に送られました。 つまり、レンダリングとリダイレクトを同時に行うことはできません。

関連する問題