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

部署到Heroku时报TypeError: OAuth2Strategy requires a clientID option如何解决

Heroku部署Passport谷歌OAuth报错TypeError: OAuth2Strategy requires a clientID option 解决方案

核心原因

本地运行时dotenv会读取项目根目录的.env文件注入环境变量,但Heroku默认不会同步本地.env文件的内容,也不会自动加载该文件,导致process.env.CLIENT_ID取值为空触发报错。

解决步骤

  • 第一步:在Heroku平台配置对应环境变量
    两种配置方式二选一即可:
    1. 网页后台配置:登录Heroku控制台进入对应应用页,切换到「Settings」标签,找到「Config Vars」板块,点击「Reveal Config Vars」,分别添加CLIENT_ID、CLIENT_SECRET两个key,填入你本地.env中对应的取值后保存。
    2. Heroku CLI配置:本地安装Heroku命令行工具后,在项目根目录执行以下命令:
    heroku config:set CLIENT_ID=你的实际CLIENT_ID取值 CLIENT_SECRET=你的实际CLIENT_SECRET取值
    
    配置完成后可执行heroku config命令验证变量是否配置成功。

注意:不要将本地.env文件提交到Git仓库,.gitignore中需要保留.env的排除规则,避免密钥泄露。

  • 第二步:修正回调地址适配生产环境
    你当前代码中回调地址写死为localhost,部署到Heroku后会出现回调不匹配问题,建议修改为动态适配环境的写法:
    callbackURL: process.env.NODE_ENV === "production" 
      ? "https://你的Heroku应用域名/auth/google/secrets" 
      : "http://localhost:3000/auth/google/secrets"
    
    同时需要进入谷歌云控制台的OAuth 2.0客户端ID配置页面,将你的Heroku应用域名加入「授权重定向URI」列表。
  • 第三步:确认dotenv加载顺序
    检查代码中require('dotenv').config()是否写在所有用到process.env变量的代码之前,必须放在Passport配置代码的顶部,确保变量加载完成后再执行认证逻辑。
  • 第四步:重启应用生效
    配置完成后执行heroku restart命令重启Heroku应用,或在网页后台点击重启按钮,确保新配置的环境变量生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 21:45:03