var express = require('express');
var router = express.Router();
router.post("/", function(req, res, next) {
console.log('Yes1');
if(!req.body.username || !req.body.password){
console.log('Yes2');
return res.status(401).json(JSON.stringify({
error: 'Username or Password are not set'
}));
}else{
console.log('Yes3');
return res.status(200).json(JSON.stringify({
data: 'Okay'
}));
}
//error handler
router.use(function(err, req, res, next) {
res.status(500).json(JSON.stringify({
error: err
}));
});
module.exports = router;
フロントエンドから私はユーザー名とパスワードを送信しています。私はどちらかのエラー200または401を受信する予定です。何らかの理由で、私はデフォルトのエラーハンドラであるエラー500を受け取っています。私はここにどのように来ているのか分かりません。私のサーバーコンソールでYes1とYes2が印刷されているので、なぜエラー401が表示されないのですか?常にエラー500を返す
@bejadoああ私はそれを知らなかった。私の理解は、ルータでnext(err)が渡された場合にのみ呼び出されます。それを削除すると問題が解決されます。私は、各ルータに「デフォルト」のエラーハンドラが必要な、より複雑なロジックを持っています。これを各ルータで行う方法はありますか? – user2924127