簡體   English   中英

如何在 Heroku 上為 Node 應用程序設置環境變量並連接到 PostgreSQL 數據庫?

[英]How to set environment variables on Heroku for Node app and connect to the PostgreSQL database?

我知道關於堆棧溢出有相同/類似的問題,我也閱讀了文檔 - 我仍然什么都不明白 - 如何設置這些變量以及在哪里!! 來設置它們。

我的 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 中為所有人(谷歌、Facebook 等)或僅為數據庫設置它們,因為我必須用 Heroku 創建一個? 我是否將指向本地數據庫的鏈接保留在我的開發文件中並分別鏈接到 Heroku 數據庫?

我什至不知道是否應該從命令行執行此操作?! 在文檔中它說: Heroku config:get CONFIG-VAR-NAME -s >> .env 那么它會是 Heroku config:get CONFIG-NAME OF MY HEROKU DATABASE -s >> .env嗎?

我是第一次部署,很困惑! 幫助 :)

根據文檔,您可以使用heroku CLI

$ heroku config:set DATABASE_URI=database_uri_here
$ heroku config:set SESSION_SECRET=session_secret
... and so on for each variable, 

或者你可以使用 UI https://dashboard-classic.heroku.com/apps/ {your-app-name}/settings 並通過網絡界面提供相同的變量,正如我在上面的評論中提到的

NODE_ENV=production沒有被heroku特殊對待,所以你需要提供它以及任何其他環境變量

ps:嚴格來說這個問題並不真正屬於SO,因為它與編程無關。 也許它需要移動到SU

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

從 .env 文件設置您的配置

特別是數據庫連接變量不能通過 Heroku 環境變量工作。 我建議使用dotenv並通過安裝Heroku CLI為文件設置變量,然后使用 bash:

heroku login
heroku run bash -a app_name

如果不存在,則創建.env文件並向其添加值

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

確認文件中的條目

cat .env

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
        }
    }
});

如上所述: 無法使用 sequelize 從本地節點應用程序連接到 heroku postgresql 數據庫

在 Heroku CLI 中登錄:

heroku login

列出所有應用程序:

heroku apps

大量導出環境變量

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

另外一個選項:

$ heroku login

然后編輯所有配置變量:

$ VISUAL="emacs" heroku config:edit -a <app_name>

這將打開 emacs,您可以在其中復制/粘貼整個.env內容。 然后保存並退出(Ctrl+x Ctrl+s、Ctrl+x Ctrl+c)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM