当前位置: 首页 > 知识库问答 >
问题:

如何修复云错误“必须提供api_key”

齐昊
2023-03-14

我正在使用multer和cloudinary构建一个图像上传应用程序。我已经使用dotenv正确配置了环境变量。然而,当我尝试使用Cloudinary上传文件时,我得到了错误“必须提供api_密钥”。

Cloudinary API凭据的提供和配置正确,如下代码所示:

阴云密布。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
        })
    })
}

埃文先生

CLOUDINARY_CLOUD_NAME='my_cloudinary_cloud_name'
CLOUDINARY_API_KEY='my_cloudinary_api_key'
CLOUDINARY_API_SECRET='my_cloudinary_api_secret'

这个env文件在我的应用程序中也是正确必需的。js文件:

app.js

require('dotenv').config({
    path: './app/config/.env'
});

如果我在cloudinary.js文件中console.log任何云配置变量,我会得到预期的输出,但是当我尝试在上传路由中使用云配置时,我会得到我必须提供api_key的错误。请有人帮我指出我做错了什么?我不想在cloudinary.js文件中写出我的云配置变量,因为代码正在发布到Github。

这是我使用云的帖子路线:

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;

共有2个答案

贺波
2023-03-14

使用节点。js v2,它可以按照安装设置文档(即require('cloudinary')中描述的以下代码示例进行声明。v2):

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);
});
景育
2023-03-14

科约@真棒-巴斯西!

遵循Nodejs的云文档和它的官方存储库,我会建议您导入云API的v2

如果您的问题仍然存在,请与我们共享堆栈跟踪

 类似资料:
  • 如何修复 创建示例helm图表名称为my图表,并使用nginx服务编写deployment.yaml、service.yaml、ingress.yaml 预期输出:......

  • 嗨,我正在创建一个简单的注册表单与django框架和mongodb。以下是我的观点: 以下是我的模型: 下面是我的<code>表单。py</code> 以下是加载 SignUpview 回溯时收到的回溯值错误: 内部 39 中的文件“C:\程序文件\Python35\lib\site-packages\django\core\处理程序\exception.py”。响应 = get_response

  • 有没有办法避免我遇到的CORS错误? 我正在写一门关于d3的课程。我希望学生能够将JSON、CSV和其他数据加载到他们的网页。他们被指示在本地打开他们的html页面,通过右键单击并使用打开 这是提供给学生的虚假数据,仅用于开发目的。有什么方法可以改变github上dev文件的设置吗?或者有什么方法可以在本地实现? 谢谢艾玛

  • 我正在使用cloudinary在我的网页上上传照片。我在网页上添加了一个新功能(facebook登录),现在当我像以前一样上传照片时,cloudinary会抛出一个错误。 “/home/ubuntu/workspace/YelpCamp/node_modules/cloudinary/lib/utils.js:982抛出“必须提供api_密钥”;^必须提供api_密钥” API_密钥、API_密钥

  • 今天我决定更新Android Studio,因为我安装的3.1版本似乎有点过时了。升级后,由于某种< code >错误,构建项目失败: 全输出: 错误指向构建文件,检查它,我想可能问题出在我的文件上。 我谷歌了一下,发现错误是由这样解析的项目引起的: 并且可以通过将代码替换为如下内容来解决: 但是我应该用字符串数组做什么呢?。

  • 我试图在JUnit 5中开发一个参数化测试,如下例所示。 尝试运行测试导致异常: 您必须为此@ParameterizedTest提供至少一个参数 这个信息让我觉得,我做错了什么,不是吗? p、 我有一个假设,只有原语类型的参数可用。