【问题标题】:heroku DATABASE_URL is undefined in nodejs appheroku DATABASE_URL 在 nodejs 应用程序中未定义
【发布时间】:2020-08-21 15:34:23
【问题描述】:

Heroku 网站声明 DATABASE_URL 是自动为您设置的。我使用了命令 heroku config 确认 DATABASE_URL 确实已设置。

但是当我使用 pg package 命令时

const client = new Client({
    connectionString: process.env.DATABASE_URL,
    ssl: true,
});

然后执行console.log(process.env.DATABASE_URL),变量读取为undefined。

我遇到的其他错误是:

UnhandledPromiseRejectionWarning:错误:服务器不支持 SSL 连接

完整代码为:

const express = require('express');
require('dotenv').config();

const { Client } = require('pg');
const app = express();

console.log(process.env.DATABASE_URL);

const client = new Client({
    connectionString: process.env.DATABASE_URL,
    ssl: true,
});

 client.connect();

 client.query('SELECT * FROM customers;', (err, res) => {
    if (err) throw err;
    for (let row of res.rows) {
        console.log(JSON.stringify(row));
    }
    client.end();
});


app.get('/', (req, res) => { 
    res.send('Hello World')
});


app.listen(4000, () => {
    console.log(`Server started on port`);
});

当我使用本地 postgresql 数据库时,该代码有效,但是当我尝试连接到 Heroku 的 postgres 数据库时,出现上述错误。有什么建议吗?

【问题讨论】:

  • 你在哪里得到这个错误?在您的本地设置或 Heroku 控制台中?
  • 本地设置错误。
  • 我正在做同样的事情并得到同样的错误:(你找出问题所在了吗?
  • @legend12 DATABASE_URL 将仅在 heroku 生产环境中定义。如果您在本地尝试,您显然会收到此错误。

标签: node.js postgresql heroku pg


【解决方案1】:

当您在本地运行项目时,您似乎遇到了连接到 Heroku Postgres 数据库的问题。

heroku config中指定的DATABASE_URL环境变量只存在于Heroku服务器上,您本地没有设置环境变量。

创建一个.env 文件并像这样包含您的连接字符串

DATABASE_URL=...

在这里,您可以包含 Heroku 上托管的数据库或本地 Postgres 数据库服务器的连接字符串。只需确保 SSL 配置正确

【讨论】:

    【解决方案2】:

    看来你没疯……这对我也不起作用,所以我挖了进去,它似乎……坏了。

    https://stackoverflow.com/a/19341505/4526479

    我看到在线 heroku 仪表板的 heroku config vars 部分中定义了 DATABASE_URL。但它只是在应用程序中未定义。

    【讨论】:

      猜你喜欢
      • 2012-07-15
      • 2016-05-05
      • 2014-12-27
      • 2016-04-13
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多