如何修复Cloudinary报错“Must supply api_key”的问题
问题根因与解决方案
你遇到的Must supply api_key报错基本是以下几个可排查的原因,按优先级逐一验证即可:
1. 调整app.js中模块的导入顺序
dotenv的配置代码必须放在所有需要用到环境变量的模块导入之前,很多人会犯的错误是先导入路由、cloudinary工具文件,再加载dotenv,这时候执行cloudinary.config()时环境变量还没被注入到process.env中,配置自然不生效。
你要保证app.js的代码顺序是:
// 第一行就加载dotenv const path = require('path'); require('dotenv').config({ path: path.join(__dirname, 'config', '.env') }); // 再导入其他依赖、路由、工具模块 const express = require('express'); const productRouter = require('./routes/product'); // 其他导入...
上面同时用path.join(__dirname)处理了.env的路径,避免你启动项目时的工作目录不对导致找不到.env文件的问题。
2. 修正Cloudinary的导入方式
旧版本Cloudinary的默认导入存在配置不生效的已知问题,你需要改用官方推荐的v2版本导入,修改cloudinary.js的第一行代码:
// 把原来的 const cloudinary = require('cloudinary'); 替换成下面的 const cloudinary = require('cloudinary').v2;
3. 清理.env文件的多余引号
dotenv会自动把引号识别为值的一部分,如果你配置时加了单/双引号,会导致实际传入Cloudinary的凭证带多余符号,验证失败。把.env里的所有引号删掉即可:
CLOUDINARY_CLOUD_NAME=my_cloudinary_cloud_name CLOUDINARY_API_KEY=my_cloudinary_api_key CLOUDINARY_API_SECRET=my_cloudinary_api_secret
做完以上修改后重启项目即可正常上传。
内容的提问来源于stack exchange,提问作者Awesome Bassey
相关产品推荐
相关产品推荐

