【问题标题】:jslint --edition=latest Unexpected ES6 feature. constjslint --edition=latest 意外的 ES6 功能。常量
【发布时间】:2016-07-06 08:58:21
【问题描述】:

我正在尝试使用 node-jslint https://github.com/reid/node-jslint 以保持我的代码干净

我的 nodejs 脚本中有一个 const,但 jslint 说它不是有效的 ES6 代码

 Unexpected ES6 feature.
const pdPersonsFilterId = process.argv[2]; // Line 10, Pos 0

这是我在控制台中使用的命令

jslint --edition=latest index.js

根据https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const,可以使用全局常量。

为什么 jslint 不认为这段代码是有效的?

【问题讨论】:

  • es6 不是 javascript 的“最新工作版本”。
  • @magreenberg:不是吗?
  • 不,浏览器跟不上 es6 的新特性,它们仍在开发中。您可以在特定情况下使用它们,但不支持网络。
  • @magreenberg:所以他们将其定义为某种任意级别的浏览器采用?诡异的。我认为开发人员可以自己做出决定。但后来是 jsLint,所以我的期望值很低。
  • @Nikage 我建议 ESLint 对 ES6 进行 linting,至少在 JSLint 完全支持 ES6 功能之前。

标签: javascript node.js constants ecmascript-6 jslint


【解决方案1】:

2020 年编辑:正如ctrl-alt-delar mentions in a comment 和答案中所预测的那样,JSLint 已经放弃了es6 的要求——看起来像on 9 Oct 2017

也就是说,es6 不再是一个有效的 JSLint 选项。今天的 OP 代码将 lint 如下所示:

/*jslint browser */
/*global process */
const pdPersonsFilterId = process.argv[2];

但是,如果您认为自己处于 OP 的情况,请确保您用于 lint 文件的任何进程都没有使用旧版本的 JSLint。一些工具附带过时的版本,或者您的构建脚本可能维护旧版本,以免破坏遗留代码。如果您遇到这种情况,下面的修复应该可以工作。

但是,如果您知道自己的 JSLint 版本比 2017 年 10 月 9 日更新,并且出现了 es6 错误,请打开一个新的 StackOverflow 问题!


对于 JSLint 的原始问题/旧版本...

JSLint 对 ES6 很满意;你只需要让它知道你正在使用 ES6。将 es6 指令添加到您的 JSLint 配置或文件顶部,然后获利。

/*jslint es6 */
const pdPersonsFilterId = process.argv[2];

现在你看到的警告消失了。

来自JSLint's help

ECMAScript [ES6] 第六版可能需要一段时间才能达到 无处不在。在不完全的环境中使用新功能 实施新标准将导致失败。这就是 JSLint 给出的原因 使用 ES6 功能时的警告。 ES6 的一些特性很好, 因此 JSLint 将通过 es6 选项识别 ES6 的优点。 如 新标准的实施变得更加稳定和更好 理解,JSLint 识别的特征集可能会增加。 过渡到 ES6 完成后,es6 选项将是 掉了。 [emph mine]

看起来很公平。所以你看到的只是警告你,你所拥有的可能无法在不支持 ES6 的地方工作,因为现在有很多地方。一旦 ES6 更加普及——或者如果你明确让 Crockford 知道你打算使用 ES6——警告将会消失/消失。 (TJ 的观点可能是,至少对于 Node,现在是删除警告的时候了。;^D)

【讨论】:

  • @T.J.Crowder 我认为你应该责备node wrapper(有an issue for this),而不是Crockford。痛苦的是,节点包装器看起来仍然使用JSLint from Oct 2015 for ES6,它没有es6 选项。 Crockford 不会(afaik)发布超出 the "canonical" online versionraw code on GitHub 的 JSLint 版本。
  • 我认为你是对的。 :-) 我无法想象我为什么不这样做。
  • Wrapper 现在有一个更新版本,fwiw - 但您可能需要 --edition=es6 才能使用 es6 代码
  • 如何将它添加到配置文件中? (我相信文件名应该是.jslintrc,但{"es6":true}什么都不做)
  • $ jslint --version node-jslint version: 0.11.0 JSLint edition 2013-08-26 那个版本 ES6 不工作,OP 说的是真的
【解决方案2】:

试试ESLint

它在NPM 上有更好的统计数据,文档很棒并且被广泛使用。

【讨论】:

  • ESLint 是一个更好的选择和更好的文档包。
  • eslint 很难全局安装。
猜你喜欢
  • 2015-12-15
  • 2016-10-08
  • 2016-05-21
  • 1970-01-01
  • 2012-02-29
  • 2017-05-22
  • 1970-01-01
  • 2012-06-23
  • 2015-08-11
相关资源
最近更新 更多