NodeJS 中未定义私有字段错误

Private Field Error Not Defined in NodeJS

我正在尝试在 NodeJS 中使用私有 class 字段。我 运行 通过带有 babel-parser 和 Babel 的 ES-Lint 来处理这段代码。在 VS Code 中,我有 ES Lint 显示错误。下面列出了错误。它发生在 IORedis 构造函数的身份验证对象内部的赋值过程中。当我 运行 Babel 中的代码时,我也遇到同样的错误。

Parsing error: Private name #password is not defined

class MyRedis {
  constructor(password, host) {

    this.host = host || process.env.HOST;
    this.#password = password || process.env.PASSWORD;

    if (!this.#password) { throw new Error('Password not set'); }

    this.client = new IORedis({
      // removed some items for brevity
      host: this.host,
      password: this.#password // error is here
    });
  }
}

解决方法是在class的顶部声明不带this的私有实例变量。您必须包含 hash,因为它是名称本身的一部分。在 MDN Docs.

中查看更多信息
class MyRedis {
  #password; // declaration creates the private variable this.#password

  constructor(password, host) {

    this.host = host || process.env.HOST;
    this.#password = password || process.env.PASSWORD;

    this.client = new IORedis({
      // removed some items for brevity
      host: this.host,
      password: this.#password
    });
  }
}