node.js - NodeJS v12.13.0 中的私有静态方法 - 语法错误
问题描述
如 Mozilla 在此处的 JavaScript 参考中所述:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Class_fields#Private_static_methods
这就是私有静态方法的工作方式:
class Foo {
static #privateStaticMethod() {
return 42;
}
}
但是,在 NodeJS v12.13.0 中使用它时,会抛出以下语法错误:
static #privateStaticMethod() {
^
SyntaxError: Unexpected token '('
at Module._compile (internal/modules/cjs/loader.js:892:18)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
at Module.load (internal/modules/cjs/loader.js:812:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Module.require (internal/modules/cjs/loader.js:849:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (.../foo.js:8:14)
at Module._compile (internal/modules/cjs/loader.js:956:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
at Module.load (internal/modules/cjs/loader.js:812:32)
查看浏览器兼容性页面,从 v12 开始应该支持私有静态方法。
这是为什么?
解决方案
该表指出支持私有静态字段,而不是方法。
在节点13.2.0
中,它在--harmony-private-methods
标志下工作
[class] 实现静态私有方法是在 v8 中添加的7.9
。该版本的 v8 已添加到 Node 13.2.0
使用该标志,在 Node 中,当您尝试访问该方法时,12.13.0
您不会得到 aSyntaxError
但 aTypeError
TypeError: Read of private field Foo from an object which did not contain the field
v8 问题: 在标志后面完全实现
推荐阅读
- identity-experience-framework - Azure B2C 自定义策略 - 更新声明以显示 PhoneFactor 已完成
- git - 从在线 VSTS 进程或组变量填充本地 VSTS Linux 代理上的 terraform.tfvars 文件中的变量
- angular - 如果总最小值不等于最大值则显示错误
- macos - Mac Gunzip 解压失败的不完整文件
- regex - 在 Perl 正则表达式中转义 @
- javascript - 如何使用 javascript 在 Django 模板中显示带有 html 元素值的警报框?
- javascript - 鼠标悬停时如何获得 figcaption 显示
- python - 如何从 Windows 读取 Linux 服务器上的文件?
- vba - 根据单元格值弹出VBA MsgBox
- java - PHP 上的 AJAX 请求示例?