【问题标题】:JSHint suppress error for optional chainingJSHint 抑制可选链接的错误
【发布时间】:2020-11-26 06:14:18
【问题描述】:

当我发现optional chaining (?.) 时,我正在编写一些 Javascript。我决定在我正在编写的一些代码中需要它。当我输入完代码后,我注意到 JSHint 给了我一个错误,上面写着 Expected an identifier and instead saw '.'. (E030) jshint(E030)。以下代码运行时没有任何错误(MDN compatibility table),但 JSHint 仍然会给出警告。

var x = {
  y: {
    z: 123
  }
};

console.log(x.y?.z)

我找到了另一个与此相关的StackOverflow question,但这个问题专门询问了 ESLint,而这个问题是关于 JSHint。我还搜索了 JSHint GitHub 存储库的问题选项卡,但我找不到任何东西。有没有办法抑制这种错误?我正在使用 Visual Studio Code Insiders。

编辑信息取自Code - Insiders > About Visual Studio Code - Insiders:

Version: 1.48.0-insider
Commit: d13d2fc56da7a2f8bcad4256212db0661fcbba45
Date: 2020-08-05T05:26:44.946Z (20 hrs ago)
Electron: 7.3.2
Chrome: 78.0.3904.130
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Darwin x64 19.5.0

【问题讨论】:

  • 这看起来不像是一个警告,更像是一个普通的语法错误,其中 jshint 无法解析这个最近添加的语法。
  • @Bergi 好的,我将编辑问题并将“警告”更改为“错误”

标签: javascript visual-studio-code jshint optional-chaining


【解决方案1】:

https://github.com/jshint/jshint/issues/3448 中存在一个问题。

它建议“您可以使用 ignore:start/ignore:end 或 ignore:line 指令使 JSHint 传递它无法识别的任何语法。”

【讨论】:

    【解决方案2】:

    将:"esversion": 11 添加到您的 jshint 文件中。版本 11 中添加了可选链接。

    【讨论】:

      【解决方案3】:

      yarn升级后好像不行

      node -v
      v16.2.0
      

      项目文件夹中的.jshint

      cat .jshintrc 
      {
          "-W138": true,
          "-W083": true,
          "esversion": 11
      }
      

      来自 package.json:

      "grunt-contrib-jshint": "^3.0.0",
      "jshint": "^2.13.1",
      

      来自 gruntfile.js

      jshint: {
          options: {
              "-W138": true,
              "-W083": true,
              "jshintrc": true,
              esversion: 11
          },
          files: ['src/js/**/*.js']
      },
      

      结果:

      grunt jshint:files
      if (response?.errCode != 200) {
                   ^ Expected an identifier and instead saw '.'.
      

      一些调查:

      node_modules/grunt-contrib-jshint/node_modules/jshint/package.json
      "repository": {
          "type": "git",
          "url": "https://github.com/jshint/jshint.git"
      },
      

      在存储库中是正确的 (2.13.1) 版本的 jshint,但在我的项目中它没有更新(仍然有 2.12.0)

      解决方案 #1:

      throw new Exception(response?.errMessage); /* jshint ignore:line */
      

      解决方案 #2:

      cd node_modules
      cp -Rp jshint grunt-contrib-jshint/node_modules/
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-25
        • 2020-08-21
        • 1970-01-01
        • 2019-07-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多