【问题标题】:Why does JSHint throw a warning if I am using const?如果我使用 const,为什么 JSHint 会发出警告?
【发布时间】:2015-02-11 01:20:03
【问题描述】:

这是我在使用 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。
  • 或者使用 eslint 代替 jshint
  • 不确定这是否是新的,但更简单的解决方案是在设置中将 ECMAScript 级别设置为 6。请参阅下面的完整答案。

标签: javascript node.js constants jslint jshint


【解决方案1】:

当依赖诸如const 之类的ECMAScript 6 功能时,您应该设置此选项,这样JSHint 就不会引发不必要的警告。

/*jshint esnext: true */编辑 2015.12.29:更新语法以反映 @Olga's comments

/*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:添加了基于 this answer 的另一个选项。

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

{
  "esversion": 6
}

【讨论】:

  • 这行得通......当然宁愿它是一些命令行参数! ...提示提示 jshint 民间
  • 文档现在说 Warning This option has been deprecated and will be removed in the next major release of JSHint. Use esversion: 6 instead. 虽然我的 Webstorm 内置插件无法识别新选项。我最终指定了两者。
  • 对我来说它的 .jshintrc 不是 .jshint,不确定 jshint 版本是否存在差异
  • 糟糕。你是对的。已更正。
  • 然后重启你的Atom,如果是这样的话
【解决方案2】:

您可以在应用的 root 中添加一个名为 .jshintrc 的文件,其中包含以下内容,以便将此设置应用于整个解决方案

{
    "esversion": 6
}

James' answer 建议您可以为 每个 文件添加注释/*jshint esversion: 6 */,但如果您需要控制多个文件,则工作量更大。

【讨论】:

  • 有使用这个的配置吗?我的 jshint 只是忽略了 .jshintrc 里面的内容。
  • @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)
  • 对我有用。这很棒,因为我们可以在项目中使用不同的版本——如果需要的话。
【解决方案3】:

我在使用导出语句时收到了同样的警告。我正在使用 VS Code,并使用了与江文龙的解决方案类似的方法。

  1. 用户设置

  2. JSHint 配置

  3. "jshint.config": {}(编辑)

  4. 指定"esversion"时使用双引号

    或者将此 sn-p 复制到用户设置中:

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

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

【讨论】:

  • 谢谢。对于那些使用 Visual Studio 代码的人来说,这里绝对是最好的答案。对于参考,通过(Mac :)“代码”> 首选项> 设置的用户设置。
  • 感谢您提供这个额外的解决方案。很有帮助。
  • 太好了,非常感谢。如果您使用 VS Code,那么效果很好。另外,请注意,在用户设置中,现在是jshint.config,以防万一。
【解决方案4】:

如果您使用的是 VSCode:

1.

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

2.

或者简单地将其添加到您的用户设置中:

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

[更新]新的 vscode 设置

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

  • 继续步骤2.

【讨论】:

    【解决方案5】:

    我花了很长时间试图解决这个问题。每个解决方案都谈论“设置选项”。我不知道那是什么意思。最后,我想通了。您可以在文件/*jshint esversion: 6 */ 的顶部包含一个注释掉的行。

    【讨论】:

    • 这样做的唯一问题,正如我发现的那样,您必须将注释添加到您使用的每个文件的顶部。更好的解决方案是在您的应用程序的根文件夹中创建一个名为 .jshintrc 的新文件,然后将以下代码添加到文件 { "esnext": true }
    • { "esnext": true } 现在是 deprecated。您现在应该改用{ "esversion": 6 }
    • 我必须使用过时的 JSHint 版本,因为只有使用 "esnext": true 才能解决这个问题。 "esversion": 6 无效。
    • 然后升级你的 JSHint ?
    【解决方案6】:

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

    【讨论】:

    • 这适用于那些使用 Grunt 的人。将此添加到 gruntfile.js
    • 谢谢你,对我来说就像一个魅力。无需忽略文件和在独占页面中单独实施 esversioning
    【解决方案7】:

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

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

    【讨论】:

      【解决方案8】:

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

      有两种选择:

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

      /*jshint esversion: 6 */
      

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

      {
          "esversion": 6
      }
      

      如果您想为每个项目使用 es6 以后的版本,您可以配置您的 IDE。

      【讨论】:

        【解决方案9】:

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

        "jshintConfig":{
            "esversion": 6 
        }
        

        【讨论】:

        • Visual Studio Code 于 2020 年 4 月接受的答案
        【解决方案10】:

        对于 Mac 上的 SublimeText 3:

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

        【讨论】:

          【解决方案11】:

          如果您使用 Webstorm 并且没有自己的配置文件,则只需在其中的 Relaxing options 中启用 EcmaScript.next

          设置 |语言和框架 | JavaScript |代码质量工具 | JSHint

          看到这个问题How-do-I-resolve-these-JSHint-ES6-errors

          【讨论】:

            【解决方案12】:

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

            Jshint 中的警告消息:

            解决方案:

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

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

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

            【讨论】:

              【解决方案13】:

              创建.jshintrc 文件没有必要

              如果您使用的是 ECMAScript 6,那么您需要做的就是告诉 JSHint:

              1. 转到文件>设置
              2. 导航到 语言和框架 > JavaScript > 代码质量工具 > JSHint
              3. 向下滚动以查找警告与指定的 ECMAScript 版本不兼容
              4. 点击设置
              5. 输入6,然后按[设置]
              6. 点击[确定]

              【讨论】:

                【解决方案14】:

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

                然后使用类似这样的命令行调用 jshint:

                jshint --config jshint_opts lib/*.js

                【讨论】:

                  【解决方案15】:

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

                  是的,您也可以通过在项目的根目录中创建 .jshintrc 文件并添加 { "esversion": 6} 来为特定项目启用此设置

                  【讨论】:

                    【解决方案16】:

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

                    【讨论】:

                      【解决方案17】:

                      如果使用 Sublime Text 3:

                      • 转到首选项 -> 设置
                      • Preferences.sublime-settings-User 下添加 "esversion": 6

                      【讨论】:

                        【解决方案18】:

                        在新版本的 Dreamweaver 中解决了这个错误

                        • 转到编辑->首选项->Linting
                        • 还有 go-to js Edit 规则集 和过去

                          "jshintConfig":{ “esversion”:6 }

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2023-04-08
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2018-08-24
                          相关资源
                          最近更新 更多