In a middleware function, I authenticate user and return when jwt token is invalid. This is the middleware function.
const authenticateUser = (req, res, next) => {
const token = req.header('x-auth');
if (!token) {
res.json({ errMessage: 'Invalid token' });
}
try {
const tokenData = verify(token, privateKey);
req.user = { name: tokenData.name, email: tokenData.email, _id: tokenData._id }
next();
} catch (error) {
res.status(401);
res.json({ errMessage: 'Invalid token', error }); //error here
return
}}
The error message:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at validateHeader (_http_outgoing.js:503:11)
at ServerResponse.setHeader (_http_outgoing.js:510:3)
at ServerResponse.header (..\node_modules\express\lib\response.js:771:10)
at ServerResponse.send (..\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (..\node_modules\express\lib\response.js:267:15)
at authenticateUser (..\app\middlewares\authenticate.js:18:14)
at Layer.handle [as handle_request] (..\node_modules\express\lib\router\layer.js:95:5)
at next (..\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (..\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (..\node_modules\express\lib\router\layer.js:95:5)
at ..\node_modules\express\lib\router\index.js:281:22
at Function.process_params (..\node_modules\express\lib\router\index.js:335:12)
at next (..\node_modules\express\lib\router\index.js:275:10)
at Function.handle (..\node_modules\express\lib\router\index.js:174:3)
at router (..\node_modules\express\lib\router\index.js:47:12)
at Layer.handle [as handle_request] (..\node_modules\express\lib\router\layer.js:95:5)