You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署MERN后端至Vercel时出现404 NOT_FOUND错误求助

MERN后端部署Vercel出现404 NOT_FOUND错误解决

部署MERN应用后端到Vercel时遇到以下错误:

404: NOT_FOUND
Code: NOT_FOUND
ID: cdg1::bbhc7-1691147707623-efc5cd10ff98

我的server.js代码

require("dotenv").config();
const express = require("express");
const mongoose = require("mongoose");
const cors = require("cors");
const cookieParser = require("cookie-parser");
const SocketServer = require("./socketServer");

const app = express();
app.use(express.json());
app.use(cors());
app.use(cookieParser());

// Socket
const http = require('http').createServer(app);
const io = require("socket.io")(http);

io.on("connection", socket => {
SocketServer(socket);
});

app.use("/api", require('./routes/authRouter'));
app.use("/api", require('./routes/userRouter'));
app.use("/api", require('./routes/postRouter'));
app.use("/api", require('./routes/commentRouter'));

const URI = process.env.MONGODB_URL;

mongoose
.connect(URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => {
console.log("Connected successfully to MongoDB");
})
.catch((err) => {
console.error("Error connecting to MongoDB", err);
});

const port = process.env.PORT || 5000;
http.listen(port, () => {
console.log("Server is running on port: ", port);
});

package.json脚本配置

"scripts": {
  "dev": "nodemon server.js"
},

问题原因及解决步骤

1. 补充start启动脚本

Vercel部署Node.js应用默认执行npm start启动服务,但你的脚本里仅配置了开发环境的dev命令。修改package.json:

"scripts": {
  "dev": "nodemon server.js",
  "start": "node server.js"
}

2. 添加Vercel专属配置文件

在项目根目录创建vercel.json,明确路由规则和服务入口:

{
  "version": 2,
  "builds": [
    {
      "src": "server.js",
      "use": "@vercel/node"
    }
  ],
  "routes": [
    {
      "src": "/api/(.*)",
      "dest": "/server.js"
    }
  ]
}

该配置会将所有/api开头的请求转发至server.js处理,同时指定使用Vercel的Node运行环境构建服务。

3. Socket.io兼容性说明

Vercel的Serverless Functions不支持WebSocket连接,若依赖Socket.io的实时功能,需调整方案:

  • 改用Vercel Edge Functions配合Server-Sent Events等替代方案
  • 将Socket服务单独部署到支持WebSocket的平台(如Render、Heroku),与Vercel后端分离

4. 检查环境变量配置

确保在Vercel控制台的项目设置中,正确添加MONGODB_URL等所需环境变量,避免因数据库连接失败导致服务无法正常启动。

内容的提问来源于stack exchange,提问作者Yanis Saadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 02:20:11