2

我是 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 文件中的变量的作用吗?根目录下有 1 个,node_modules/dotenv 文件夹下还有一个,这些文件没有推送到 git,如何使用?

提前致谢!

4

1 回答 1

4

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

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

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

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

通过 Heroku Dashboard 配置变量

使用 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_key,api_secret和替换cloud_name为实际值。也就是说,我仍然会仔细检查以确保这些值是正确的。

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

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

于 2014-08-03T04:07:03.483 回答