如果我使用const,为什么JSHint会发出警告?


316

这是我在使用const时遇到的错误:

<error line="2" column="1" severity="warning" message="&apos;const&apos; is available in ES6 (use esnext option) or Mozilla JS extensions (use moz)." source="jshint.W104" />

我的代码如下所示:

const Suites = {
    Spade: 1,
    Heart: 2,
    Diamond: 3,
    Club: 4
};

只有JSHint每次都警告我,代码才能正常工作。


我在文字中没有看到任何问题,但可能您已经回答了:"use esnext option"。又为什么呢 该错误消息不是很清楚吗?const还不是标准的JS。
Teemu 2014年

5
或使用eslint代替jshint
Rage Rage

Answers:


557

当依赖ECMAScript 6功能(例如)时const,您应该设置此选项,以便JSHint不会引发不必要的警告。

/ * jshint esnext:true * /编辑2015.12.29:更新了语法以反映@Olga 的评论

/*jshint esversion: 6 */

const Suites = {
    Spade: 1,
    Heart: 2,
    Diamond: 3,
    Club: 4
};

顾名思义,此选项告诉JSHint您的代码使用ECMAScript 6特定语法。 http://jshint.com/docs/options/#esversion

编辑2017.06.11:基于此答案添加了另一个选项。

内联配置对于单个文件效果很好,但是您也可以通过.jshintrc在项目的根目录中创建文件并将其添加到整个项目中来为整个项目启用此设置。

{
  "esversion": 6
}

1
这可行...肯定希望它是一些命令行参数!...提示提示jshint民谣
Scott Stensland 2015年

9
文档现在说,Warning This option has been deprecated and will be removed in the next major release of JSHint. Use esversion: 6 instead.尽管我的Webstorm内置插件无法识别新选项。我最终都指定了两者。
奥尔加,2015年

5
对我来说,其.jshintrc而不是.jshint,不确定jshint版本是否存在差异
teknopaul

哎呀。你是对的。已更正。
James Hibbard

1
如果是这种情况,然后重新启动Atom
Vitor Braga

280

您可以在应用程序的根目录中添加一个名为.jshintrc的文件,其中包含以下内容,以将该设置应用于整个解决方案

{
    "esversion": 6
}

詹姆斯的答案建议您可以/*jshint esversion: 6 */每个文件添加一个注释,但是如果需要控制多个文件,这比必要的工作更多。


1
是否有使用此配置?我的jshint只是忽略里面的东西.jshintrc
伊桑·杨

1
@EthanYang,不。没有额外的配置。只需确保JSHint可以找到该文件。来自文档:JSHint will start looking for this file in the same directory as the file that's being linted. If not found, it will move one level up the directory tree all the way up to the filesystem root. (Note that if the input comes from stdin, JSHint doesn't attempt to find a configuration file)
Zanon

59

使用export语句时,我得到了同样的警告。我正在使用VS Code,并使用了类似的方法来解决Wenwen Jiang的问题。

  1. 用户设置
  2. JSHint配置
  3. "jshint.options": {} (编辑)
  4. 指定时使用双引号"esversion"

    或将此代码段复制到“用户设置”中:

    "jshint.options": {
      "esversion": 6,
    }

.jshintrc如果要为编辑器配置全局jshint设置,则无需创建文件


8
谢谢。对于使用Visual Studio代码的人来说,绝对是最好的答案。对于参考,通过(Mac :)“代码”>“偏好设置”>“设置”进行“用户设置”。
CopyJosh

1
感谢您提供此附加解决方案。这是非常有帮助的。
dprogramz

41

如果您使用的是VSCode:

1。

  • 转到首选项 -> 设置cmd + ,
  • 输入jshint.options到搜索栏
  • 将鼠标悬停在上面,然后单击铅笔图标
  • 现在将其附加在右侧。
  • 添加"esversion": 6到选项对象。

2。

或者只是将其添加到您的用户设置中:

"jshint.options": {
    "esversion": 6
}

[更新]新的vscode设置

  • 转到首选项 -> 设置cmd + ,
  • 输入jshint搜索

VSCode设置

  • 继续步骤 2.

32

我花了很长时间试图解决这个问题。每个解决方案都讨论“设置选项”。我不知道那是什么意思 终于,我明白了。您可以仅在文件顶部添加注释掉的行/*jshint esversion: 6 */

解


24
如我所知,这样做的唯一问题是必须在使用的每个文件的顶部添加注释。更好的解决方案是在应用程序的根文件夹中创建一个名为的新文件.jshintrc,然后将以下代码添加至该文件{ "esnext": true }
Josh Pittman

17
{ "esnext": true }现在已弃用。您现在应该{ "esversion": 6 }改为使用。
cybersam '16

3
我必须使用JSHint的过时版本,因为只有通过使用"esnext": true,我才能解决此问题。"esversion": 6没有效果。
Joncom'9

4
然后升级JShint😉
西里尔Duchon,多丽丝

18

您可以在jshint选项对象内指定esversion:6。请看图片。我正在使用grunt-contrib-jshint插件。

在此处输入图片说明


2
这适用于使用Grunt的用户。将此添加到gruntfile.js
JoeTidee '17

1
谢谢,对我来说就像是一种魅力。无需忽略文件和独占页面中esversioning的单独实现
sg28

3

当您开始使用ECMAScript 6时,IDE会引发此错误。

有两个选项:

如果您只有一个文件并且要使用es6,则只需在文件顶部添加以下行。

/*jshint esversion: 6 */

或者,如果您有许多js文件,或者您正在使用任何框架(例如nodejs express),则可以.jshintrc在根目录中创建一个新文件,并在文件中添加以下代码:

{
    "esversion": 6
}

如果要对每个项目使用es6版本以上,则可以配置IDE。


2

在您的package.json中,您可以告诉Jshint这样使用es6

"jshintConfig":{
    "esversion": 6 
}

对于Visual Studio Code,答案在2020年4月接受
ArifMustafa


1

如果使用的是Grunt配置,则需要执行以下步骤

Jshint中的警告消息:

在此处输入图片说明

解:

  1. 设置jshint选项并映射.jshintrc.js文件

在此处输入图片说明

  1. 在该文件中创建.jshintrc.js文件,添加以下代码
{  
  “ esversion”:6  
} 

配置此后,再次运行它将跳过警告,

在此处输入图片说明


0

创建一个名为jshint_opts的文件,其内容如下:{“ esversion”:6}

然后使用以下命令行调用jshint:

jshint --config jshint_opts lib / *。js


0

对于Mac上的SublimeText 3:

  1. 在根目录(或任何您喜欢的位置)中创建一个.jshintrc文件,并指定esversion:
    # .jshintrc
    {
      "esversion": 6
    }
  1. 引用刚刚在SublimeLinter用户设置中创建的文件的pwd(“ SublimeText”>“首选项”>“程序包设置”>“ SublimeLinter”>“设置”)
    // SublimeLinter Settings - User
    {
      "linters": {
        "jshint": {
          "args": ["--config", "/Users/[your_username]/.jshintrc"]
        }
      }
    }
  1. 退出并重新启动SublimeText

0

2020年5月这是我找到的一个简单解决方案,它将在Windows上为我的所有项目解决,如果您的项目位于c:目录中,请创建新文件.jshintrc并将其保存在C目录中,打开此.jshintrc文件并编写{ "esversion": 6},这就是它。警告应该消失,同样会在d目录中工作

在此处输入图片说明

在此处输入图片说明 是的,您还可以仅通过在项目的根目录中创建一个.jshintrc文件并添加来对特定项目启用此设置 { "esversion": 6}


0

.jshintrc目录中创建文件,并在其中添加最新的js版本:"esversion": 9和asi版本:("asi": true它将帮助您避免使用分号)

{
    "esversion": 9,
    "asi": true
}

0

为了在Dreamweaver CC 2018中解决此问题,我转到了首选项,编辑规则集-选择JS,编辑/应用更改,找到“ esnext”,并将false设置更改为true。经过数小时的研究,它对我有用。希望它能帮助别人。


-1

如果使用Sublime Text 3:

  • 转到首选项 -> 设置
  • Preferences.sublime-settings下-用户添加“ esversion”:6

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.