无法在节点中使用 Knex.js migrate:latest 对用户进行身份验证

Can't authenticate user with Knex.js migrate:latest in Node

问题:

相关资料:Windows10、Node、knex、PostgreSQL

我正在尝试 运行 来自 cmd knex migrate:latest --env development 的 knex CLI 命令 migrate:latest。

我得到 "error: password authentication failed for user "

我的第一个问题是指定的用户 - 在我的 knexfile.js 配置文件中,我正在导出具有已定义连接的开发对象,其中定义了我的所有环境变量。

  development: {
    client: 'pg',
    connection: {
      host: "localhost",
      port: process.env.DB_PORT,
      username: process.env.DB_USER,
      password: process.env.DB_PW,
      database: process.env.DB_NAME
    }
  }

因此,尽管我尝试以 'postgres' 身份登录数据库,但 knex 正尝试以相关错误消息中的 Windows 用户身份登录我,这是我在我的个人电脑。我以该用户身份登录,使用该用户帐户安装了 PostgreSQL,并使用该用户初始化了数据库。

使用 psql,我可以使用在我的 knex 配置中指定的密码登录到在我的 knex 配置中指定的数据库。事实上,我为所有用户使用相同的密码以减少问题中的变量数量。

除了尝试以这种方式解决问题之外,我还将 pg_hba.conf 文件中的所有身份验证设置都设置为 'trust' - 但这也没有解决问题。

尝试将用户名和密码以及数据库名称硬编码到 knexfile 而不是使用 process.env.XXXX 并重试。

听起来您的环境变量没有正确传递到节点。