使用Google闭包编译器获取JavaScript私有类字段的解析器错误,尽管根据MDN得到了广泛支持。推广他们的例子:
class ClassWithPrivateField {
#privateField;
constructor() {
this.#privateField = 42;
}
getPrivate() {
return this.#privateField;
}
}
console.log("private field", new ClassWithPrivateField().getPrivate());
将上述内容保存到private.js中,并在节点容器中运行:
$ docker run \
--workdir /home/node/app \
--rm -t -v $PWD:/home/node/app \
node:18 bash -c \
"node private.js"
private field 42
控制台输出在上面的最后一行上正确显示。现在如果我们通过google-closure-compiler
运行它
$ docker run \
--workdir /home/node/app \
--rm -t -v $PWD:/home/node/app \
node:18 bash -c \
"npm i -g google-closure-compiler && google-closure-compiler --js /home/node/app/private.js"
这是最后的输出:
/home/node/app/private.js:2:2: ERROR - [JSC_PARSE_ERROR] Parse error. '}' expected
2| #privateField;
^
1 error(s), 0 warning(s)
我从一个Github哨所那里得到了这样的印象:这个特性还不受支持,对吗?如果我想使用私有字段,是否有解决方案或解决办法?即使忽略此错误以允许编译继续,也是可以接受的。谢谢。
发布于 2022-09-24 09:13:42
闭包编译器还不支持私有字段。周围的工作太不使用私有字段或使用像Babel一样的东西来翻译它们。
https://stackoverflow.com/questions/73826369
复制相似问题