如何修复云错误“必须提供 api_key”
Posted
技术标签:
【中文标题】如何修复云错误“必须提供 api_key”【英文标题】:How to fix cloudinary error "Must supply api_key" 【发布时间】:2021-12-13 00:16:56 【问题描述】:我正在使用 multer 和 cloudinary 构建一个图像上传应用程序。我已经使用 dotenv 正确配置了我的环境变量。但是,当我尝试使用 Cloudinary 上传文件时,我收到错误“必须提供 api_key”。
Cloudinary API 凭据已正确提供和配置,如下面的代码所示:
cloudinary.js
const cloudinary = require('cloudinary');
cloudinary.config(
cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
api_key: process.env.CLOUDINARY_API_KEY,
api_secret: process.env.CLOUDINARY_API_SECRET
)
exports.uploads = (file, folder) =>
return new Promise(resolve =>
cloudinary.uploader.upload(file, (result) =>
resolve(
url: result.url,
id: result.public_id
)
,
resource_type: "auto",
folder: folder
)
)
.env
CLOUDINARY_CLOUD_NAME='my_cloudinary_cloud_name'
CLOUDINARY_API_KEY='my_cloudinary_api_key'
CLOUDINARY_API_SECRET='my_cloudinary_api_secret'
我的 app.js 文件中也需要正确的 .env 文件:
app.js
require('dotenv').config(
path: './app/config/.env'
);
如果我控制台记录 cloudinary.js 文件中的任何 cloudinary 配置变量,我会得到预期的输出,但是当我尝试在上传路由中使用 cloudinary 时,我会得到必须提供 api_key 的错误。请有人能帮我指出我做错了什么吗?我不想在 cloudinary.js 文件中写出我的 cloudinary 配置变量,因为代码正在发布到 Github。
这是我使用 cloudinary 的发布路线:
const express = require('express'),
Product = require('../app/models/product'),
upload = require('../app/utils/multer'),
cloudinary = require('../app/utils/cloudinary'),
fs = require('fs'),
router = express.Router();
router.post('/products', upload.array('image'), async (req, res) =>
const uploader = async (path) => await cloudinary.uploads(path, 'Images');
const urls = []
const files = req.files
for (const file of files)
const
path
= file;
const newPath = await uploader(path)
urls.push(newPath)
fs.unlinkSync(path)
const name = req.body.name
const product = new Product(
name: name,
imageone: urls[0].url,
imagetwo: urls[1].url,
imagethree: urls[2].url,
imagefour: urls[3].url
)
product.save(function (err, prod)
if (err)
throw err
else
req.flash('success', "You have added a new product.")
res.redirect("/dashboard")
)
)
module.exports = router;
【问题讨论】:
【参考方案1】:Kóyo @awesome-bassey!
遵循 Cloudinary docs for Nodejs 和官方 repo 我建议您导入 cloudinary API 的 v2
。
如果您的问题仍然存在 - 请与我们分享堆栈跟踪
【讨论】:
我已经导入了 v2.它仍然没有工作。我也尝试了很多其他选项...请问如何共享堆栈跟踪? 在这里您可以阅读更多关于stack-trace 的信息,当然我建议您仔细检查您的.env
是否已正确加载。【参考方案2】:
使用Node.js v2,它可以声明为installation setup document中描述的以下代码示例(即require('cloudinary').v2 em>):
var cloudinary = require('cloudinary').v2;
cloudinary.config(
cloud_name: '<YOUR_CLOUD_NAME>',
api_key: '<YOUR_API_KEY>',
api_secret: '<YOUR_API_SECRET>',
secure: true
);
cloudinary.uploader.upload("my_image.jpg",
function(error, result)
console.log(result, error);
);
【讨论】:
以上是关于如何修复云错误“必须提供 api_key”的主要内容,如果未能解决你的问题,请参考以下文章