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
});
}
}
我正在尝试在 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
});
}
}