如何在heroku上为节点app设置环境变量并连接到postgresql数据库?

jav*_*016 13 config heroku environment-variables node.js

我知道堆栈溢出有相同/类似的问题,我也阅读了文档 - 我仍然不明白任何 - 如何设置这些变量和WHERE !! 设置它们.

我的env/production.js文件:

module.exports = {
    "DATABASE_URI": process.env.DATABASE_URI,
    "SESSION_SECRET": process.env.SESSION_SECRET,
    "TWITTER": {
       "consumerKey": process.env.TWITTER_CONSUMER_KEY,
       "consumerSecret": process.env.TWITTER_CONSUMER_SECRET,
       "callbackUrl": process.env.TWITTER_CALLBACK
    },
    "FACEBOOK": {
        "clientID": process.env.FACEBOOK_APP_ID,
        "clientSecret": process.env.FACEBOOK_CLIENT_SECRET,
        "callbackURL": process.env.FACEBOOK_CALLBACK_URL
    },
    "GOOGLE": {
        "clientID": process.env.GOOGLE_CLIENT_ID,
        "clientSecret": process.env.GOOGLE_CLIENT_SECRET,
        "callbackURL": process.env.GOOGLE_CALLBACK_URL
    },
    "LOGGING": true
};
Run Code Online (Sandbox Code Playgroud)

在我的env/development.js文件中,我设置了变量(链接到我的postgres/localhost/xxx).我是否需要将它们设置为heroku(Google,Facebook等)或仅用于数据库,因为我必须使用heroku创建一个?我是否将链接保留在我的开发文件中的本地数据库中并单独链接到heroku数据库?

我甚至不知道我是否想从我的命令行中做到这一点?!在文档中它说:heroku config:get CONFIG-VAR-NAME -s >> .env所以它是heroku配置:获取我的HEROKU DATABASE的配置名称-s >> .env?

我是第一次部署而且很困惑!救命 :)

dar*_*uby 23

根据您可以使用的文档heroku CLI

$ heroku config:set DATABASE_URI=database_uri_here
$ heroku config:set SESSION_SECRET=session_secret
... and so on for each variable, 
Run Code Online (Sandbox Code Playgroud)

或者你可以使用UI https://dashboard-classic.heroku.com/apps/ {your-app-name}/settings并通过web界面提供相同的变量,正如我在上面的评论中提到的那样

NODE_ENV=production没有特别处理heroku,所以你需要提供它以及任何其他env变量

ps:严格来说这个问题并不属于SO,因为它与编程无关.也许它需要转移到SU


小智 6

使用:

heroku config:set $(cat .env | sed '/^$/d; /#[[:print:]]*$/d')
Run Code Online (Sandbox Code Playgroud)

从.env文件设置您的配置。

  • 太好了,谢谢!如果有人能解释这个 sed 命令的确切作用,那就太好了 (2认同)

小智 5

特别是数据库连接变量无法通过 Heroku 环境变量工作。我建议使用dotenv并通过安装Heroku CLI将变量设置为文件,然后使用 bash:

heroku login
heroku run bash -a app_name
Run Code Online (Sandbox Code Playgroud)

.env如果文件不存在则创建文件并向其添加值

touch .env
echo "ENV_VAR=value" >> .env
Run Code Online (Sandbox Code Playgroud)

确认文件中的条目

cat .env
Run Code Online (Sandbox Code Playgroud)