He estado trabajando con Express durante años, y estoy un poco oxidado en el lado mecanografiado, sin embargo... ¡Creo que me he quedado ciego! Es la primera vez que me encuentro con esto, así que debo estar haciendo algo mal...
Mi problema es este:
Aquí está el código de mi aplicación express:
import bodyParer from "body-parser"; import methodOverride from "method-override"; import helmet from "helmet"; import fileUpload from "express-fileupload"; import cors from "cors"; import { errors } from "celebrate"; import { expressRouter } from "./routes"; import config from "../config/config"; import { ErrorHandlers } from "../middleware"; const expressApp = express(); expressApp.use(bodyParer.json()); expressApp.use(methodOverride()); expressApp.use(helmet()); expressApp.use(fileUpload()); expressApp.use(cors()); expressApp.use(errors()); expressApp.use(config.api.v1Prefix, expressRouter); const errorHandlers = new ErrorHandlers(); expressApp.use(errorHandlers.notFound); expressApp.use(errorHandlers.handler); export { expressApp };Así es como se ve el enrutador:
// import user from "../routes/user"; const expressRouter = Router(); expressRouter.get("/status", (req, res) => res.send("OK")); // user(expressRouter); // TODO: finish this off when above '/status' works... export { expressRouter };También sospecho de los controladores de errores que tenemos, y así es como se ven:
import { inversifyContainer } from "../config/inversify_config"; import { TYPES } from "../config/inversify_types"; import { Logger } from "../loaders/logger"; import httpStatus from "http-status"; export class ErrorHandlers { loggerDependency = inversifyContainer.get<Logger>(TYPES.LoggerDependency); notFound(req, res, next) { const error = new Error("Not Found"); error["status"] = 404; next(error); } public handler(err, req, res, next) { const response = { code: err.status, message: err.message || httpStatus[err.status], errors: err.errors, stack: err.stack, }; if (process.env.NODE_ENV !== "development") { delete response.stack; } res.status(err.status); res.json(response); } }Alguien más ha experimentado esto antes? Por favor, avíseme si hay algo más que pueda brindarle asistencia.
Hasta ahora no he podido identificar el problema. ¡Cualquier ayuda será apreciada!
Así que... ehmmm.
Estamos usando cloud foundry (en IBM).
Lo que sucedió fue que, en el pasado, nuestro continuous deployment se atascó . Luego cancelamos manualmente esa implementación, para que las implementaciones en cola pudieran ejecutarse y continuar en ese momento :)
Lo que me di cuenta hoy fue que la aplicación ANTIGUA nunca se borró. Este era un servicio de fundición en la nube que se ejecutaba en el mismo dominio (url) que el servicio de fundición en la nube activo, lo que efectivamente lo convirtió en 2 instancias en ejecución, en otras palabras.
Obviamente, el servicio ANTIGUO no tenía este nuevo punto final y nunca lo tendría, ya que se separó de la implementación.
Una vez que eliminé el servicio anterior, este problema desapareció por completo.
Gracias a cualquiera que se haya tomado el tiempo de leer todas estas tonterías. ¡Salud!