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
相关产品推荐
相关产品推荐

