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

Express路由参数在Vercel部署后失效,请求技术支持

解决Express短链项目在Vercel部署后的404问题

Vercel默认会优先将请求匹配静态资源,只有当静态资源不存在时才会转发给Node.js服务器。你的动态路由/:uid在Vercel上被当成静态文件路径查找,找不到就返回404,这就是问题所在。

解决方案

  1. 添加Vercel路由重写配置
    在项目根目录创建vercel.json文件,配置所有请求都转发到你的Express服务器入口文件:
{
  "rewrites": [
    { "source": "/(.*)", "destination": "/server.js" }
  ]
}

注意:将/server.js替换成你实际的服务器启动文件名(比如index.js)。

  1. 确认package.json的启动脚本
    确保package.json中包含正确的start命令,Vercel会用这个命令启动你的服务器:
{
  "scripts": {
    "start": "node server.js"
  }
}
  1. 完善getURL函数的错误处理
    虽然不是Vercel特有的问题,但建议在getURL函数中处理uid不存在的情况,避免请求挂起:
function getURL(uid, res) {
  // 示例数据库查询逻辑
  const targetUrl = yourDatabase.query(uid);
  if (targetUrl) {
    res.redirect(targetUrl);
  } else {
    res.status(404).send("该短链不存在");
  }
}

完成以上配置后,重新部署到Vercel,动态路由即可正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:10:35