api server corrections
- index: fix app.listen() error handling — callback never receives err,
bind failures are emitted as 'error' events; use server.on('error', ...)
- app: add error-handling middleware to catch unhandled route errors and
return a safe 500 JSON response instead of leaking stack traces
- package.json: remove unused cookie-parser and @types/cookie-parser
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -12,7 +12,6 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@workspace/api-zod": "workspace:*",
|
"@workspace/api-zod": "workspace:*",
|
||||||
"@workspace/db": "workspace:*",
|
"@workspace/db": "workspace:*",
|
||||||
"cookie-parser": "^1.4.7",
|
|
||||||
"cors": "^2",
|
"cors": "^2",
|
||||||
"drizzle-orm": "catalog:",
|
"drizzle-orm": "catalog:",
|
||||||
"express": "^5",
|
"express": "^5",
|
||||||
@@ -20,7 +19,6 @@
|
|||||||
"pino-http": "^10"
|
"pino-http": "^10"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/cookie-parser": "^1.4.10",
|
|
||||||
"@types/cors": "^2.8.19",
|
"@types/cors": "^2.8.19",
|
||||||
"@types/express": "^5.0.6",
|
"@types/express": "^5.0.6",
|
||||||
"@types/node": "catalog:",
|
"@types/node": "catalog:",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import express, { type Express } from "express";
|
import express, { type Express, type NextFunction, type Request, type Response } from "express";
|
||||||
import cors from "cors";
|
import cors from "cors";
|
||||||
import pinoHttp from "pino-http";
|
import pinoHttp from "pino-http";
|
||||||
import router from "./routes";
|
import router from "./routes";
|
||||||
@@ -31,4 +31,9 @@ app.use(express.urlencoded({ extended: true }));
|
|||||||
|
|
||||||
app.use("/api", router);
|
app.use("/api", router);
|
||||||
|
|
||||||
|
app.use((err: Error, _req: Request, res: Response, _next: NextFunction) => {
|
||||||
|
logger.error({ err }, "Unhandled error");
|
||||||
|
res.status(500).json({ error: "Internal server error" });
|
||||||
|
});
|
||||||
|
|
||||||
export default app;
|
export default app;
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ if (Number.isNaN(port) || port <= 0) {
|
|||||||
throw new Error(`Invalid PORT value: "${rawPort}"`);
|
throw new Error(`Invalid PORT value: "${rawPort}"`);
|
||||||
}
|
}
|
||||||
|
|
||||||
app.listen(port, (err) => {
|
const server = app.listen(port, () => {
|
||||||
if (err) {
|
|
||||||
logger.error({ err }, "Error listening on port");
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.info({ port }, "Server listening");
|
logger.info({ port }, "Server listening");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
server.on("error", (err) => {
|
||||||
|
logger.error({ err }, "Error listening on port");
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user