我是KeystoneJS的新手,我在Heroku上的部署问题很小。 这是我的网站:http://jeroendruwe.herokuapp.com/,当我导航到管理部分(http://jeroendruwe.herokuapp.com/keystone/signin)时 我收到了无效的Cloudinary Config提供错误
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,所以如何使用它们?
提前致谢!
答案 0 :(得分:2)
首先,让我先回答你的上一个问题。 .env
模块使用dotenv
文件,该模块加载.env
文件中的变量/值,并使process.env
中的应用程序可以使用它们。确保在代码中尽早调用.load()
方法。
var dotenv = require('dotenv');
dotenv.load();
您还应该知道Heroku还有另外两种配置环境变量的方法(参见Configuration and Config Variables)。一个通过您的应用程序仪表板,另一个通过CLI。
使用Heroku信息中心,只需填写NEW_KEY
和NEW_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_key
,api_secret
和cloud_name
。也就是说,我仍然会仔细检查以确保这些值是正确的。
在我的Heroku部署中,我使用dovenv
在开发中设置环境变量,并使用Heroku Dashboard或CLI将它们设置为生产环境。
如果您仍然遇到问题,请发布您使用的实际代码(当然省略您的实际API密码),包括.env
文件的内容。