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

部署至Vercel后API函数超时及路由无法访问问题求助

Node.js API部署Vercel后的路由访问异常问题

问题描述

将Node.js API部署至Vercel后,先出现API函数超时问题,按照官方文档调整项目结构后,根路由/可正常返回内容,但其余所有子路由均提示无法找到,已严格遵循部署指南操作仍未解决。

相关代码

api/index.js

import authRoutes from "../routes/authRoute.js"
import userRoutes from "../routes/userRoute.js"
import productRoutes from "../routes/productRoute.js"
import orderRoutes from "../routes/orderRoute.js"

const corsOptions = {
    origin: ["http://localhost:5173/"],
    methods: ["POST", "GET", "PUT"],
    credentials: true
}

app.use(cors(corsOptions))

app.get('/', (req, res) => {
    res.send("Hello from Node API server!");
});

app.use("api/v1/auth", authRoutes)
app.use("api/v1/user", userRoutes)
app.use("api/v1/product", productRoutes)
app.use("api/v1/order", orderRoutes)

vercel.json

{ "version": 2, "rewrites": [{ "source": "/(.*)", "destination": "/api" }] }

问题排查与解决

1. 修复路由挂载路径错误

代码中所有子路由的挂载路径缺少开头的斜杠/,导致Express会将路径相对于当前路由前缀拼接,无法正确匹配请求路径。

修正后的路由挂载代码:

app.use("/api/v1/auth", authRoutes)
app.use("/api/v1/user", userRoutes)
app.use("/api/v1/product", productRoutes)
app.use("/api/v1/order", orderRoutes)

2. 适配生产环境的CORS配置

当前CORS配置仅允许localhost:5173访问,部署到Vercel后需替换为生产环境的前端域名(如你的Vercel前端项目域名),否则会出现跨域问题影响路由访问:

const corsOptions = {
    origin: ["https://your-frontend-domain.vercel.app"], // 替换为实际前端域名
    methods: ["POST", "GET", "PUT"],
    credentials: true
}

3. 验证Vercel重写规则

当前vercel.json的重写规则正确,会将所有请求转发到/api(即api/index.js处理),确保api目录下的入口文件为index.js,符合Vercel Serverless Functions的目录要求。

4. 重新部署测试

修正代码后,重新推送代码至Vercel部署,测试所有子路由是否能正常访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:05:06