es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error interno del servidor de Heroku (500) – Node.js

He creado un backend con Node.js y he seguido la guía de solución de problemas de Node.js de Heroku sin suerte.

Esto es lo que obtengo cuando intento acceder a /items:

2021-12-22T00:00:31.281188+00:00 heroku[router]: at=info method=GET path="/items" host=react-native-backend-vw.herokuapp.com request_id=fe7f509e-dffc-41dd-831e-13bc20c2a7fa fwd="69.143.59.34" dyno=web.1 connect=0ms service=15ms status=500 bytes=292 protocol=https

Esto es lo que obtengo cuando intento crear un elemento:

2021-12-22T00:42:36.215687+00:00 heroku[router]: at=info method=POST path="/" host=react-native-backend-vw.herokuapp.com request_id=a51e95c8-1bc4-41f0-ba95-108ab64f0ed9 fwd="69.143.59.34" dyno=web.1 connect=0ms service=42ms status=500 bytes=292 protocol=https

Como puedes ver, obtengo un estado 500 para ellos sin otros errores.

server.js:

if (process.env.NODE_ENV !== 'production') { 
  require('dotenv').config() }
const express = require("express");
const app = express();
const cors = require("cors");
const bodyParser = require("body-parser");
const itemsRouter = require("./routes/items-router");

app.use(express.json());

app.use(cors());

app.use(bodyParser.urlencoded({
  extended: true
}));
app.use(bodyParser.json());

app.use('/', itemsRouter);

app.listen(process.env.PORT || 3001);

app.use((err, req, res, next) => {
  res.status(500).json({
    message: "Something went wrong",
  });
});

module.exports = app;

knexfile.js:

module.exports = {
  development: {
    client: "pg",
    connection: {
      host: process.env.HOST,
      user: process.env.USER,
      password: process.env.PASSWORD,
      database: process.env.DATABASE,
      charset: "utf8"
    },
    migrations: {
      directory: __dirname + "/knex/migrations",
    },
    seeds: {
      directory: __dirname + "/knex/seeds"
    }
  },

  production: {
    client: "pg",
    connection: process.env.DATABASE,
    migrations: {
      directory: "./knex/migrations",
    },
    seeds: {
      directory: "./knex/seeds",
    },
    pool: {
      min: 2,
      max: 10
    }
  }
};

He pasado muchas horas y he consultado todos los recursos. ¡Cualquier ayuda ofrecida sería muy apreciada!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    De los registros proporcionados, parece que el servidor backend está devolviendo un código de estado 500 para las solicitudes GET y POST a /items y /. Esto indica que hay algún error ocurriendo en el lado del servidor al manejar estas solicitudes.

    Lo primero que hay que hacer es revisar los registros del servidor en busca de errores. Heroku proporciona un comando para ver los registros en la terminal:

    heroku logs --tail

    Al ejecutar este comando, se mostrarán los registros en tiempo real. Esto debería ayudar a identificar cualquier error que esté ocurriendo en el lado del servidor.

    Además de revisar los registros, también se recomienda agregar código de manejo de errores al archivo server.js. Esto ayudará a depurar cualquier error que ocurra en la aplicación.

    Una forma de hacer esto es agregar una función middleware para manejar errores. Esta función se puede agregar después de las rutas de express, como se muestra en el fragmento de código proporcionado:

    app.use((err, req, res, next) => {
    res.status(500).json({
    message: "Algo salió mal",
    });
    });

    Este código capturará cualquier error que ocurra en las rutas y enviará una respuesta con un código de estado 500 y un mensaje de error.

    Si los registros y las funciones de manejo de errores no ayudan a identificar el problema, es posible que el problema esté relacionado con las variables de entorno. Asegúrese de que las variables de entorno requeridas estén configuradas correctamente en Heroku y que coincidan con las variables utilizadas en el archivo knexfile.js.

    Otra cosa que se debe verificar es la configuración de la base de datos en el archivo knexfile.js. Asegúrese de que se estén usando las credenciales y el host correctos de la base de datos, y de que la base de datos exista.

    Con estos pasos, debería poder identificar y solucionar cualquier problema con el servidor backend y hacer que funcione correctamente en Heroku.

Comments are closed.