我已经从使用dotcloud切换到了heroku。我正在使用nconf进行配置。我设置它首先从环境变量中获取,如果没有,那么它从config.json文件中获取。在localhost上这很好用。对于我的内部版本号,我将它存储在配置文件中,而不是存储在环境变量中,以便我可以在推送时设置它,然后不必更改环境。
app.coffee
nconf.argv().env().file file: "./config.json"
config.json
{
"APP_BUILD_NUMBER": "1.0.0"
}
如果我在本地或在dotcloud上运行,如果我这样做,nconf正确传递1.0.0
nconf.get("APP_BUILD_NUMBER")
但是,在heroku上,它返回undefined。如果我在环境变量中设置它,那么它确实有效。我想知道我做错了什么。
答案 0 :(得分:5)
尝试删除路径的“./”部分:
nconf.argv().env().file file: "config.json"
如果不起作用,请尝试
nconf.argv().env().file file: __dirname + "/config.json"
答案 1 :(得分:1)
我建议运行heroku run bash
然后输入Node REPL并尝试多个路径,直到找出不同的内容。进行更改然后等待推送是一个繁琐的调试周期。我怀疑你的问题是在路径上,或者可能没有取消环境变量。