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

Express服务器部署到Vercel后非根路由无法访问的问题

解决Express部署Vercel后子路由无法访问的问题

问题根源

你的vercel.json中routes配置有误,当前规则把所有请求都转发到根路径/,而非让Express服务器处理这些请求,导致子路由(如/tools)无法被Express的路由匹配,返回Cannot GET /pathname。

解决方案

修改vercel.json的routes配置,将所有请求转发到你的Express入口文件index.js,而不是根路径:

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

额外注意事项

  • Express代码中不要硬编码端口号,使用Vercel提供的环境变量端口,否则部署后会出现端口不匹配问题:
    const express = require('express');
    const app = express();
    
    // ... 其他中间件和路由配置
    
    const port = process.env.PORT || 5000;
    app.listen(port, () => {
      console.log(`Server running on port ${port}`);
    });
    
  • 确保你的Express路由配置正确,本地能正常访问的子路由代码无逻辑问题,比如:
    app.get('/tools', (req, res) => {
      res.send('Tools page content');
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:10:24