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

Heroku部署Cloudinary项目报Must supply cloud_name错误寻求解决方案

问题现象

在本地.env文件中声明CLOUD_NAME、CLOUD_KEY、CLOUD_SECRET环境变量,执行git push heroku master部署项目时出现如下报错:

2022-07-14T13:21:28.836730+00:00 app[web.1]: Must supply cloud_name
2022-07-14T13:21:28.836731+00:00 app[web.1]: (Use `node --trace-uncaught ...` to show where the exception was thrown)
2022-07-14T13:21:28.976355+00:00 heroku[web.1]: Process exited with status 1
2022-07-14T13:21:29.107460+00:00 heroku[web.1]: State changed from starting to crashed
2022-07-14T13:21:43.021994+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=react-bank-mysql.herokuapp.com request_id=6d906e55-283a-4669-bc37-b66380d65ba0 fwd="49.36.100.220" dyno= connect= service= status=503 bytes= protocol=https
2022-07-14T13:21:43.334479+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=react-bank-mysql.herokuapp.com request_id=b4c0fd71-4de1-4a95-b7e9-55b86f4c697c fwd="49.36.100.220" dyno= connect= service= status=503 bytes= protocol=https
2022-07-14T13:22:36.489119+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=react-bank-mysql.herokuapp.com request_id=177b60b5-6e3d-4b33-a329-b2b87448235a fwd="49.36.100.220" dyno= connect= service= status=503 bytes= protocol=https
2022-07-14T13:22:36.778798+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=react-bank-mysql.herokuapp.com request_id=5bf1946e-68c4-4d77-85aa-54ea4ac0c873 fwd="49.36.100.220" dyno= connect= service= status=503 bytes= protocol=https

此前参考Cloudinary官方示例代码,注释了显式配置Cloudinary的代码段,同时添加了CLOUDINARY_URL环境变量,问题未解决。相关代码如下:

const cloudinary = require("cloudinary").v2;
require("dotenv").config();

//Connect to Cloudinary && Folder
// cloudinary.config({
//   cloud_name: process.env.CLOUD_NAME,
//   api_key: process.env.CLOUD_KEY,
//   api_secret: process.env.CLOUD_SECRET,
//   secure: true,
// });
报错原因

本地.env文件不会被Heroku部署环境自动读取。.env文件仅用于本地开发环境加载环境变量,且默认会被.gitignore排除,不会被提交到代码仓库,Heroku运行时自然拿不到你在本地.env里配置的所有Cloudinary相关参数,初始化Cloudinary时找不到cloud_name就会抛出异常,最终导致应用崩溃返回H10错误。

解决步骤
  1. 恢复被注释的Cloudinary显式配置代码,同时确保dotenv的加载语句放在所有读取process.env的逻辑之前,避免环境变量未加载就执行初始化:
const cloudinary = require("cloudinary").v2;
// 必须先加载dotenv配置,再调用cloudinary.config
require("dotenv").config();

cloudinary.config({
  cloud_name: process.env.CLOUD_NAME,
  api_key: process.env.CLOUD_KEY,
  api_secret: process.env.CLOUD_SECRET,
  secure: true,
});
  1. 将Cloudinary相关环境变量配置到Heroku平台,二选一即可:
  • 命令行方式:本地安装并登录Heroku CLI后,在项目目录下依次执行以下命令,替换占位符为你自己的Cloudinary密钥真实值:
heroku config:set CLOUD_NAME=你的Cloudinary cloud_name值
heroku config:set CLOUD_KEY=你的Cloudinary api_key值
heroku config:set CLOUD_SECRET=你的Cloudinary api_secret值
  • 网页后台方式:登录Heroku控制台进入对应项目页,找到「Settings」选项卡,下拉到「Config Vars」板块,点击「Reveal Config Vars」,逐个添加CLOUD_NAME、CLOUD_KEY、CLOUD_SECRET三个键值对,填写完成后保存。
  1. 确认项目根目录下的.gitignore文件包含.env条目,绝对不要把本地.env文件提交到Git仓库,避免密钥泄露。
  2. 重新执行git push heroku master完成部署即可。

补充:你之前尝试的CLOUDINARY_URL方案未生效,原因也是没有把该变量配置到Heroku的Config Vars中。如果要使用该方案,需要在Heroku中添加键为CLOUDINARY_URL、值为cloudinary://<你的api_key>:<你的api_secret>@<你的cloud_name>的配置项,添加后无需写显式的cloudinary.config代码也可正常初始化,但显式配置的可读性更高,更推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:09:21