部署至Vercel后LeetCode用户统计接口返回404错误排查求助
部署至Vercel后LeetCode用户统计接口返回404错误排查求助
兄弟,我帮你梳理下代码里可能导致Vercel部署后出现404的几个关键问题,都是新手部署Express到Vercel容易踩的坑:
端口硬编码问题
你代码里直接写了app.listen(4000),但Vercel作为云平台,会动态分配可用端口,不是固定的4000。硬编码端口会导致Vercel启动的服务无法被外部访问,直接返回404。
修改成动态获取端口的写法:const PORT = process.env.PORT || 4000; app.listen(PORT, () => { console.log(`LeetCode Backend is running on port ${PORT}`); });Vercel路由重写配置缺失
Vercel默认的路由规则不会自动把所有请求转发到你的Express服务,尤其是像/:id这种动态路由。你需要在项目根目录新建一个vercel.json文件,添加路由重写规则:{ "rewrites": [ { "source": "/(.*)", "destination": "/server.js" } ] }这里的
server.js要替换成你实际的Express入口文件名,这样所有请求都会被转发到你的Express服务处理,避免路由不匹配导致404。额外排查:LeetCode反爬拦截(可能间接引发问题)
虽然本地能正常请求,但Vercel服务器的IP可能被LeetCode的反爬机制识别为非浏览器请求。你可以在请求头里加上常见的User-Agent试试:headers: { 'Content-Type': 'application/json', 'Referer': 'https://leetcode.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' },这个不一定是404的直接原因,但如果请求被拦截,也可能导致服务返回异常,顺带排查下。
先优先解决前两个问题,这是Vercel部署Express应用时最常见的404诱因,改完重新部署应该就能正常访问了。
备注:内容来源于stack exchange,提问作者Sriya
相关产品推荐
相关产品推荐

