Después de escribir todos los puntos finales, decidí agregar PORTS y JWT_key a .ENV usando el paquete dotenv, todo funcionó perfectamente hasta que decidí hacer la prueba de integración ahora express.listen no funciona y automáticamente toma el puerto del archivo .ENV y no no como
esto es app.js
require("express-async-errors"); const Express = require("express"); const app= Express(); const winston = require("winston"); require("./start/logger")(); require("./start/routes")(express); require("./start/db")(); require("./start/config")(); require("dotenv").config(); const port = process.env.PORT || 5000; const server = app.listen(port, () => console.log(`listening on port ${port}`) ); module.exports = server;no obtiene nada en la consola
este es un archivo .env
PORT=9000 jwtPrivateKey="myPrivateKey"tan pronto como elimino el puerto del archivo .env, el servidor deja de responder
este es mi archivo de prueba
const request = require("supertest"); let server; describe("/api/genres", () => { beforeEach(() => { server = require("../../app"); }); afterEach(() => { server.close(); }); describe("GET /", () => { it("should return all genres", async () => { jest.setTimeout(2000); const res = await request(server).get("/api/genres"); expect(res.status).toBe(200); }); }); });por favor guíame a través de esto. No hice un repositorio de git para esto, de lo contrario lo habría reiniciado.
En su archivo .env, cambie las variables de
port=9000a
PORT=9000 Está recibiendo el error porque las variables dentro de su .env no están en mayúsculas, sin embargo, en su código está usando process.env.PORT donde están en mayúsculas.
Siguiendo con lo que ha dicho Heiko, es una buena convención usar app en lugar de express . Cambiaría la parte superior del código a:
const Express = require("express"); const app = Express(); Y luego cambia express.listen() a:
const port = process.env.PORT || 5000; app.listen(port, () => console.log(`listening on port ${port}`) );¡Gracias! Espero que esto ayude.