部署Node.js项目到Vercel时出现404页面未找到问题求助
部署Vercel后出现404页面未找到问题排查求助
我使用Node.js编写了index.js服务,配置了package.json和vercel.json后部署到Vercel,访问时出现404页面未找到问题,恳请帮忙排查。
index.js代码
const express = require("express"); const cors = require("cors"); const app = express(); const port = 5000; const bodyParser = require("body-parser"); const zego = require("./offline_modules/zegoServerAssistant"); const fs = require("fs"); app.use(cors()); app.use(bodyParser.json()); require("dotenv").config(); app.get("/token/:userId", async (req, res, next) => { const appId = process.env.appId; const userId = req.params.userId; const secret = process.env.secret; const effectiveTimeInSeconds = 2 * 60; const payloadObject = { room_id: userId, privilege: { 1: 1, // loginRoom 2: 0, // publishStream }, stream_id_list: null, }; try { const token = zego.generateToken04( appId, userId, secret, effectiveTimeInSeconds, JSON.stringify(payloadObject) ); res.json({ token }); } catch (e) { console.log({ e }); res.json({ e: e?.errorMessage }); } }); app.listen(port, () => { console.log(`Server running in : ${port}`); });
package.json配置
{ "name": "server", "version": "1.0.0", "description": "", "main": "index.js", "engines": { "node": "14.x" }, "scripts": { "start": "nodemon index.js" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "body-parser": "^1.20.2", "cors": "^2.8.5", "dotenv": "^16.0.3", "express": "^4.18.2" }, "devDependencies": { "nodemon": "^2.0.21" } }
vercel.json配置
{ "version": 2, "builds": [ { "src": "./index.js", "use": "@vercel/node" } ], "routes": [ { "src": "/(.*)", "dest": "index.js" } ] }
文件结构

排查方向建议
- 修复vercel.json语法错误:检查原配置中
"builds"字段的引号是否为标准英文双引号,语法错误会导致Vercel无法识别路由规则。 - 替换生产环境启动脚本:
nodemon是开发环境工具,Vercel生产环境需使用node index.js启动服务,修改package.json的scripts:"scripts": { "start": "node index.js", "dev": "nodemon index.js" } - 适配Vercel端口规则:Vercel会自动分配端口,硬编码
5000可能导致服务无法监听正确端口,修改index.js的端口配置:const port = process.env.PORT || 5000; - 确认离线模块部署完整性:检查
offline_modules/zegoServerAssistant目录是否被.gitignore排除,确保该模块能被上传到Vercel。 - 添加根路径测试路由:当前服务仅配置了
/token/:userId路由,直接访问根路径会返回404,可添加测试路由验证服务状态:app.get("/", (req, res) => { res.send("Server is running"); });
内容的提问来源于stack exchange,提问作者Quang Phú Nguyễn Hoàng
相关产品推荐
相关产品推荐

