如何在Heroku for Node应用程序上设置环境变量并连接到PostgreSQL数据库?

wgmfuz8q  于 2022-12-12  发布在  Node.js
关注(0)|答案(6)|浏览(172)

我知道在堆栈溢出上有相同/相似的问题,我也读过文档-我只是仍然不明白任何事情-如何设置这些变量和在哪里!!设置它们。
我的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
};

在我的env/development.js文件中我设置了变量(链接到我的PostgreSQL/localhost/xxx)。我需要在Heroku中为所有(Google,Facebook等)设置变量还是只为数据库设置变量,因为我必须用Heroku创建一个变量?我需要在我的开发文件中保留到我的本地数据库的链接,并单独链接到Heroku数据库吗?
我甚至不知道我是否应该从我的命令行做它?!在文档中它说:Heroku配置:获取配置变量名称-s〉〉.env,那么它会是Heroku config:get CONFIG-NAME OF MY HEROKU DATABASE -s >> .env吗?
我第一次部署,所以困惑!帮助:)

rsl1atfo

rsl1atfo1#

根据documentation,您可以使用heroku CLI

heroku config:set DATABASE_URI=database_uri_here --app your-app-name
heroku config:set SESSION_SECRET=session_secret --app your-app-name

或者您可以使用UIhttps://dashboard-classic.heroku.com/apps/{your-app-name}/settings并通过Web界面提供相同的变量,正如我在上面的注解中提到的
heroku不会对NODE_ENV=production进行特殊处理,因此您需要提供它以及任何其他env变量

2eafrhcq

2eafrhcq2#

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

从.env文件设置配置

wqsoz72f

wqsoz72f3#

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

heroku login
heroku run bash -a app_name

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

touch .env
echo "ENV_VAR=value" >> .env

确认文件中的条目

cat .env
pkln4tw6

pkln4tw64#

Heroku现在会在您添加PostgreSQL加载项时自动设置DATABASE_URL环境变量

然后,可以在以下目录下看到此变量,它位于其他环境变量(可能是手动定义的)的旁边:

  • 设定
  • 配置变量

添加的变量已经包含秘密身份验证信息,因此您应该直接使用它。

如何使用Sequelize

我刚刚管理了一个使用Sequelize的工作解决方案,如以下网址所述:使用Sequelize在Heroku上部署FeathersJS应用程序,您基本上只需要执行以下操作:

sequelize = new Sequelize(process.env.DATABASE_URL, {
    dialect: 'postgres',
    protocol: 'postgres',
    dialectOptions: {
        ssl: {
            require: true,
            rejectUnauthorized: false
        }
    }
});

如以下网址所述:Can't connect to heroku postgresql database from local node app with sequelize

c0vxltue

c0vxltue5#

在Heroku CLI中登录:

heroku login

列出所有应用程序:

heroku apps

大量导出环境变量

cat .env | tr '\n' ' ' | xargs heroku config:set -a your_app
zazmityj

zazmityj6#

另一个选项:
$ heroku login
然后编辑所有配置变量:
$ VISUAL="emacs" heroku config:edit -a <app_name>
这将打开emacs,在这里你可以复制/粘贴整个.env内容。然后保存并退出(Ctrl+x Ctrl+s,Ctrl+x Ctrl+c)。

相关问题