No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Gesti贸n avanzada de errores: Throw

13/29
Recursos

Aportes 24

Preguntas 4

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Esta clase es magistral. Cada vez me doy cuenta de que no conozco nada jajaja

les comparto mi implementaci贸n del middleware de error

const Sentry = require('@sentry/node');
const debug = require('debug')('api:error');
const config = require('./../config');
const response = require('./../network/response');

const sentryUrl = `https://${config.sentry.dns}@sentry.io/${config.sentry.id}`;
Sentry.init({ dsn: sentryUrl });

function withErrorStack(err, stack) {
    if (config.dev) {
        return { ...err, stack }
    }
}

function logErrors(err, req, res, next) {
    Sentry.captureException(err);
    debug(err.stack);
    next(err);
}

function errorHandler(err, req, res, next) {
    const { statusCode } = err;
    response.error(req, res, withErrorStack(err, err.stack), statusCode);
}

module.exports = {
    logErrors,
    errorHandler,
}

en el curso de backend con node y el de passport js, se trabaja con un libreria @hapi, la cual tiene un modulo para el manejo de errores que es @hapi/boom y @hapi/joi para validaciones, con unas simples lineas se le da manejo al error, es muy practico, lo mismo con las validaciones.

La clase es buena aunque se agradecer铆a que no repita nombres de archivos ya que eso genera mucha confusi贸n. En utils tenemos error.js y en network tenemos errors.js

Usando custom error en lugar de throw new Error()

creando la fucnion error en la carpeta util, ya no haria falta el error.js de la carpeta network?

Fant谩stico ahora mi c贸digo est谩 mucho m谩s organizado con los cursos de carlos, que f谩cil es aprender Node con 茅l.

Entiendo el uso del helper lo que no entiendo es porqu茅 repetimos en network/response la misma logica del status code y status msg.

Ahora tenemos todos los errores centralizados dentro de utils/error, con lo cual no deberiamos llamar a network error sino llamar a utils/error y es este error catcheado por network error.

Podemos modificar entonces network/response la function error

exports.error = (req, res, message, status) => {
  res.status(status).send({
    error: true,
    status,
    body: message
  });
};

驴como funciona el next?

Definitivamente, muy buena clase

Por si alguien mas le da el mismo error que a mi, 鈥渁pp use requires a middleware鈥 La solucion es la darle require se le coloca llaves:

const {errors} = require('../network/errors');

Fijes茅 que igual le devuelve un error:false cuando deber铆a ser true, supongo que se solucionara en adelante.

Estoy super confundido con el archivo 鈥渟ecure鈥 en users, hay una funci贸n 鈥渃heckAuth鈥 que recibe el parametro 鈥渁ction鈥 y adentro 鈥渕iddleware鈥 con los argumentos 鈥渞eq, res, next鈥. Si mal no entiendo, middleware se ejecuta cuando se devuelve al invocar checkAuth desde router.put, pero el 煤nico argumento es lo que afecta al switch, 驴los par谩metros req, res y next c贸mo le llegan al middleware?

Aqui un poco mas de infromaci贸n. Acerca de este trucaso para el manejo de errores.

handle errors

sacando brillo a el mundo magico de nodejs

Fant谩stico ahora mi c贸digo est谩 mucho m谩s organizado con los cursos de carlos, que f谩cil es aprender Node con 茅l.

Excelente clase!

Me agrada como explica Carlos, pero marea un mont贸n tantos archivos con el mismo nombre, el naming de archivos ac谩 es m谩s complicado que el c贸digo

Genial esta clase, el orden para realizar el proyecto me parece genial, aunque a veces al repetir algunos nombres en carpetas me he confundido, ese orden hace que el c贸digo en general sea m谩s f谩cil de entender

Justo ese error, estaba pensando como solucionarlo

Para las personas que tengan dudas con los middlewares les dejo la documentaci贸n donde vienen explicadas algunas cosas as铆 como el uso e implementaci贸n de ellos.

el middleware de errors que le pasamos a la app de express manejara todos los errores y excepciones no manejadas?

quede muy confundido con esta clase, no entendi en que momento se llamo la funcion de network/errors.js ni porque va como middleware hasta el final