I'm trying to deploy an Express.js + MongoDB + Mongoose backend to Vercel, but I’m getting this error when accessing any route (including /api/v1):
404: NOT_FOUND
Code: NOT_FOUND
Project structure:
Backend/
├── src/
│ ├── app.js
│ ├── index.js
│ ├── routers/
│ │ ├── user.route.js
│ │ ├── company.route.js
│ │ └── ... (other routes)
├── vercel.json
├── package.json
└── ...
vercel.json:
{
"version": 2,
"builds": [
{
"src": "src/index.js",
"use": "@vercel/node"
}
],
"routes": [
{
"src": "/(.*)",
"dest": "src/index.js"
}
]
}
app.js:
import express from "express";
import cookieParser from "cookie-parser";
import cors from "cors";
import dotenv from "dotenv";
import indexRoutes from "./routers/index.routes.js";
import userRoutes from "./routers/user.route.js";
import companyRoute from "./routers/company.route.js";
import jobRoute from "./routers/job.route.js";
import applicationRoute from "./routers/application.route.js";
import adminRoute from "./routers/admin.route.js";
import interviewRoute from "./routers/interview.route.js";
import portfolioRoute from "./routers/portfolio.route.js";
dotenv.config();
const app = express();
// Middleware
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());
const corsOptions = {
origin: "http://localhost:5173",
credentials: true,
methods: ["GET", "POST", "PUT", "DELETE"],
allowedHeaders: ["Content-Type", "Authorization"],
};
app.use(cors(corsOptions));
// Test Route
app.get("/", (req, res) => {
return res.status(200).json({
message: "Connected to the server",
success: true
});
});
// Routes
app.use("/api/v1/user", userRoutes);
app.use("/api/v1/company", companyRoute);
app.use("/api/v1/job", jobRoute);
app.use("/api/v1/application", applicationRoute);
app.use("/api/v1/admin", adminRoute);
app.use("/api/v1/interviews", interviewRoute);
app.use("/api/v1/portfolio", portfolioRoute);
export default app;
When deployed to Vercel:
- Accessing
https://smartjobportal-server.vercel.app/api/v1(or any route) gives404 NOT_FOUND. - Even root
/route returns 404. - Logs show no output, no crash, nothing.
What I’ve Tried:
- Confirmed all routes are properly defined.
- MongoDB connection works locally.
app.listen()works when runningnpm run devornode src/index.js.- Added a test
/route to verify. - Deployed with Vercel CLI (successful build and deploy).
vercel.jsoncorrectly configured to point tosrc/index.js.
How can I fix this 404 error and get my Express routes working on Vercel?