eslint 7 说支持 ES2020 了,怎么还报错呢?
- ES2020 支持类的私有属性,示例代码如下:
// calc.js
class Rectangle {
#w = 0;
#h = 0;
constructor(width, height) {
this.#w = Number(width);
this.#h = Number(height);
}
get area() {
return this.#w * this.#h;
}
get perimeter() {
return 2 * (this.#w + this.#h);
}
}
- 命令行执行
npm install eslint
,看到安装的 eslint 版本是 7.28 - 搞一个 .eslintrc.json 配置文件如下:
{
"parserOptions": {
"ecmaVersion": 11
},
"env": {
"browser": true,
"jquery": true
},
"extends": "eslint:recommended",
"rules": {
"indent": [
"error",
2,
{
"SwitchCase": 1,
"VariableDeclarator": {"var": 2, "let": 2, "const": 3}
}
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"single"
],
"semi": [
"error",
"always"
],
"no-console": [
"error",
{ "allow": ["error"] }
]
}
}
- 执行命令
npx eslint calc.js
,结果报错如下:
/home/wangding/rep/rectangle/calc.js
3:3 error Parsing error: Unexpected character '#'
✖ 1 problem (1 error, 0 warnings)
这个怎么解决啊?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,Private Class Fields 这一特性目前仍是草案,虽有部分浏览器支持了,但并非 ES 标准。
所谓的 ES2020 支持,其实是指它在制订 ES2020 期间被提出,但争议很大(甚至你能看到一些 TC39 成员呼吁要废止 proposal-class-fields),到目前尚处于 stage-3 阶段(即 Candidate 阶段),尚有变动的较大可能。
其次,ESlint 本身只支持 stage-4 阶段的特性(即 Finished 阶段)。
最后,ESlint 官方会推荐你使用
babel-eslint
,以支持更多的实验性特性。【附】ES 草案各阶段: