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

部署至Vercel的Express应用仅首页可用,其他路由首次访问后失效求助

问题解决指南

问题分析

你遇到的核心问题是:Express部署到Vercel后,非首页路由仅首次访问有效,后续返回404。这通常是因为Vercel的Serverless环境特性,以及Express应用的导出方式、配置文件的细节问题导致的。

解决方案

1. 修正Express入口文件写法

Vercel的Serverless函数不需要你手动启动服务器(app.listen()),只需导出Express实例即可,平台会自动处理请求转发。修改你的index.js:

const express = require('express');
const app = express();

// 首页路由
app.get('/', (req, res) => {
  res.send('首页内容');
});

// /users路由
app.get('/users', (req, res) => {
  res.send('用户列表');
});

// 仅导出Express实例,删除app.listen()相关代码
module.exports = app;

2. 调整vercel.json配置

确保路由规则的dest路径正确,添加斜杠避免解析异常:

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

3. 排查路由与中间件冲突

  • 检查所有路由的注册顺序,确保兜底路由(如app.use('*', ...))放在所有业务路由之后,避免提前拦截请求。
  • 移除可能干扰路由匹配的无效中间件(比如错误配置的静态文件服务)。

4. 清除缓存重新部署

在Vercel控制台触发重新部署,勾选「清除构建缓存」选项,确保新的代码和配置完全生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:30:31