javascript “错误:SASL:SCRAM-SERVER-FIRST-MESSAGE:客户端密码必须是字符串”

ocebsuys  于 10个月前  发布在  Java
关注(0)|答案(1)|浏览(59)

运行我的测试时,出现以下错误:`“after each”hook for“creates a new artist in the database”Error:SASL:SCRAM-SERVER-FIRST-MESSAGE:客户端密码必须为字符串
错误指向如下:

// helper.js
const db = require("../src/db");

afterEach(async () => {
  await db.query("TRUNCATE Artists CASCADE");
});

字符串

  • 'db'文件如下:*
`// db/index.js
const { Pool } = require("pg");

const pool = new Pool();

module.exports = {
  query: (text, params) => pool.query(text, params),
};`

测试文件如下:

// artist-create.test.js
const { expect } = require("chai");
const request = require("supertest");
const app = require("../src/app");
const db = require("../src/db");

describe("create artist", () => {
  describe("/artists", () => {
    describe("POST", () => {
      it("creates a new artist in the database", async () => {
        const { status, body } = await request(app).post("/artists").send({
          name: "Tame Impala",
          genre: "Rock",
        });

        expect(status).to.equal(201);
        expect(body.name).to.equal("Tame Impala");
        expect(body.genre).to.equal("Rock");

        const {
          rows: [artistData],
        } = await db.query(`SELECT * FROM Artists WHERE id = ${body.id}`);
        expect(artistData.name).to.equal("Tame Impala");
        expect(artistData.genre).to.equal("Rock");
      });
    });
  });
});

.env和.env.test文件如下:

// .env
PGUSER=postgres
PGHOST=localhost
PGPASSWORD=password
PGDATABASE=music_library_dev
PGPORT=5432
PORT=3000

// .env.test
PGUSER=postgres
PGHOST=localhost
PGPASSWORD=password
PGDATABASE=music_library_api_test
PGPORT=5432
PORT=3000


这是我第一次使用stackoverflow寻求帮助,所以如果需要任何进一步的细节,请让我知道!我很乐意提供更多的信息,如果需要的话,我不想完全填补页面粘贴所有的代码,我写的,如果没有必要。
我试图更改密码以绕过这个问题,但这不起作用。

lymnna71

lymnna711#

要修复此错误,请按如下所示更新db/index.js文件:

// db/index.js
const { Pool } = require("pg");
const dotenv = require("dotenv");

const environment = process.env.NODE_ENV || "development";
const envFile = environment === "test" ? ".env.test" : ".env";
dotenv.config({ path: envFile });

const pool = new Pool();

module.exports = {
  query: (text, params) => pool.query(text, params),
};

字符串
此修改通过在运行测试时从. env.test加载适当的环境变量来修复密码问题。确保使用npm install dotenv安装了dotenv库。

相关问题