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

部署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"
      }
    ]
  }

文件结构

文件结构


排查方向建议

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

内容的提问来源于stack exchange,提问作者Quang Phú Nguyễn Hoàng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:14:56