【问题标题】:Cloudinary Invalid Cloudinary Config ProvidedCloudinary 提供的 Cloudinary 配置无效
【发布时间】:2014-09-25 15:48:33
【问题描述】:

我是 KeystoneJS 的新手,我在 Heroku 上的部署遇到了一个小问题。 这是我的网站:http://jeroendruwe.herokuapp.com/,当我导航到管理部分 (http://jeroendruwe.herokuapp.com/keystone/signin) 我收到 Invalid Cloudinary Config Provided 错误

Papertrailapp 日志:http://pastebin.com/Yn8Pdttz

我已阅读文档 (http://keystonejs.com/docs/configuration/#services-cloudinary)。奇怪的是,当我尝试其中一个(在 keystone.js 中)时,整个网站停止工作:

keystone.set('cloudinary config', { cloud_name: 'my-cloud', api_key: 'abc', api_secret:     '123' });
// or
keystone.set('cloudinary config', 'cloudinary://api_key:api_secret@cloud_name' );

所以我现在所做的是在 keystone.init(...'cloudinary config': 'cloudinary://...') 中设置属性。我还将 url 添加到 .env 文件中的 CLOUDINARY_URL 环境变量中

我该如何解决这个问题?

谁能解释一下 .env 文件中的变量有什么作用? root有1个,node_modules/dotenv文件夹下有1个,这些文件没有推送到git,怎么用?

提前致谢!

【问题讨论】:

    标签: cloudinary keystonejs


    【解决方案1】:

    首先,让我先回答您的最后一个问题。 .env 文件由dotenv 模块使用,该模块加载.env 文件中的变量/值,并使它们可用于process.env 中的应用程序。确保在代码中尽早调用.load() 方法。

    var dotenv = require('dotenv');
    dotenv.load();
    

    您还应该知道 Heroku 还有另外两种配置环境变量的方法(参见Configuration and Config Variables)。一个通过您的应用程序仪表板,另一个通过他们的 CLI。

    使用 Heroku 仪表板,只需填写 NEW_KEYNEW_VALUE 字段,然后按 Save

    使用 Heroku CLI,只需使用 heroku config:set 命令。

    $ heroku config:set CLOUDINARY_URL=cloudinary://api_key:api_secret@cloud_name
    Adding config vars and restarting myapp... done, v12
    CLOUDINARY_URL: cloudinary://api_key:api_secret@cloud_name
    

    如果您使用 Heroku,我建议您使用其中一种方法来为您的生产应用程序设置 CLOUDINARY_URL

    现在回到你原来的问题。此错误通常意味着 Cloudinary 配置有问题(即它不正确或完全丢失)。如果没有看到您正在使用的实际代码,就不可能查明确切的问题。

    我将假设您将api_keyapi_secretcloud_name 替换为实际值。也就是说,我仍然会仔细检查以确保这些值是正确的。

    在我的 Heroku 部署中,我使用 dovenv 在开发中设置环境变量,并使用 Heroku Dashboard 或 CLI 在生产中设置它们。

    如果您仍然遇到困难,请发布您使用的实际代码(当然,省略您的实际 api 密钥),包括您的 .env 文件的内容。

    【讨论】:

    • 非常感谢您的详细解答!我通过在我的 heroku 仪表板上添加 CLOUDINARY_URL 作为配置变量来修复它。我现在了解 dotenv 模块的概念,但为什么有 2 个 .env 文件以及如何使用根 .env 文件(它只包含一个 MANDRILL_API_KEY)imgur.com/gwVWiQL
    • node_modules\dotenv 中的.env 文件,如果我没记错的话,用于单元测试。唯一相关的 .env 文件是您应用程序中的文件。你可以放心地忽略node_modules\dotenv 中的那些。
    猜你喜欢
    • 2014-11-28
    • 2018-06-06
    • 2018-05-20
    • 2018-03-24
    • 2015-10-22
    • 2014-11-24
    • 2015-12-28
    • 2018-02-08
    • 2017-08-30
    相关资源
    最近更新 更多