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

在Vercel部署Node.js后端遇问题,寻求技术解决方案

在Vercel部署Node.js后端时遇到构建与服务器启动问题

我正尝试在Vercel上部署Node.js后端,但遇到诸多问题。据了解需通过vercel.json文件让Vercel识别Node环境。

最初我通过Vercel界面关联GitHub项目,指定根目录为./backend,自定义命令为npm install和node server.js。日志显示端口8080已启动,但构建过程始终无法完成,卡在构建阶段。

随后我尝试如下vercel.json配置:
该配置完成构建步骤,但未启动服务器,访问出现404页面

{
    "version": 2,
    "builds": [{"src": "server.js", "use": "@vercel/node"}],
    "routes": [{"src": "/(.*)", "dest": "/"}]
}

之后又尝试以下配置:
出现无限构建循环,但服务器确实已启动

{
    "version": 2,
    "buildCommand": "npm run build",
    "routes": [{"src": "/(.*)", "dest": "/"}]
}

我目前有些困惑,肯定是细节出错了,希望能得到帮助,谢谢!


解决方案

1. 修正路由配置,指向正确的入口文件

第一个配置的核心问题是路由规则错误,dest: "/"无法将请求转发到server.js处理。修改vercel.json的路由规则:

{
  "version": 2,
  "builds": [
    {
      "src": "server.js",
      "use": "@vercel/node"
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "/server.js"
    }
  ]
}

2. 终止无限构建循环

第二个配置的循环问题源于buildCommand的不合理设置:

  • 若你的package.json中build命令会生成新文件并触发仓库提交,会导致Vercel持续触发构建,需移除这类逻辑
  • 若无需自定义构建流程,直接删除buildCommand字段,使用Vercel默认的Node.js构建规则

3. 适配Vercel的端口要求

Vercel不允许硬编码端口,必须使用环境变量获取分配的端口。修改server.js的监听逻辑:

const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

4. 确认项目结构与依赖

确保./backend目录下存在package.json和server.js,package.json需包含必要依赖:

{
  "name": "backend",
  "dependencies": {
    "express": "^4.18.2"
    // 其他你的项目依赖
  }
}

内容的提问来源于stack exchange,提问作者Maxwell Jones

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:04:51