Al agregar algunos campos a la página (desde el lado del cliente), ocurre un error: Cannot read properties of undefined (reading 'split')
. Ocurre en este fragmento de código const jwt = require('jsonwebtoken');
module.exports = function(role) { return function (req, res, next) { if (req.method === "OPTIONS") { next(); } try { const token = req.headers.authorization.split(' ')[1]; if (!token) { return res.status(401).json({message: "Not authorized"}); } const decoded = jwt.verify(token, process.env.SECRET_KEY); if (decoded.role !== role) { return res.status(403).json({message: "No access"}); } req.user = decoded; next(); } catch (e) { console.log(e.message); //error message here res.status(401).json({message: "Not authorized"}); } }; }
Además, si lo agrega desde el lado del servidor (por ejemplo, en cartero), entonces todo funciona bien. ¿Dónde está el error?
Esto simplemente significa que el valor req.headers.authorization
no es una cadena (o lo más probable es que tenga el valor: undefined . Primero debe verificar si el valor está establecido (y si es válido, es decir, una cadena) antes de llamar a split
if(req.headers.authorization) {
const token = req.headers.authorization.split(' ')[1];
}