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

Node.js应用本地运行正常 部署Heroku后登录注册POST请求返回400错误

可能的原因及解决方案

1. Heroku环境变量缺失

本地.env文件不会自动同步到Heroku平台,你需要手动在Heroku后台的「Settings → Config Vars」中添加所有本地.env内的自定义变量:

  • 必须配置JWT_SECRET,值和本地.env中一致,否则JWT签名生成时会触发错误被catch捕获,返回400
  • Heroku安装Postgres插件后会自动生成DATABASE_URL,不需要手动配置,确保你的生产数据库配置正确读取该变量即可

2. 模块引入路径错误

你的auth.js位于/routers目录下,引入constants的路径写法错误:

// 错误写法,会去/routers/config/constants.js查找文件,不存在该路径
const { SALT_ROUNDS } = require("./config/constants");

// 修正为相对当前文件的正确路径
const { SALT_ROUNDS } = require("../config/constants");

本地运行正常大概率是因为本地运行目录为根目录,Node按运行目录查找文件碰巧生效,部署到Heroku后按文件相对路径严格查找就会触发模块不存在错误。

3. 数据库迁移未执行成功

你的release阶段配置了迁移脚本,但两种情况会导致迁移失败,数据库未创建users表,触发查询/插入错误返回400:

  • post-release.sh无执行权限:本地执行chmod +x post-release.sh后重新提交代码部署
  • 迁移脚本本身存在错误:手动执行Heroku命令验证迁移heroku run npx sequelize-cli db:migrate,查看是否有报错

4. 排查辅助步骤

执行heroku logs --tail查看实时运行日志,触发一次登录/注册请求,即可看到具体的报错信息,快速定位问题根源。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:06:05