如何修复 ESLint 中意外的令牌?

use*_*576 11 npm eslint

我使用npm install -g eslintMac 上的命令全局安装 ESLint 。安装成功,但是当我运行时,eslint -v这是我遇到的问题:

$ npm install -g eslint
path/to/bin/eslint -> path/to/lib/node_modules/eslint/bin/eslint.js
+ eslint@7.3.1
added 107 packages from 63 contributors in 4.823s

$ eslint -v
path/to/lib/node_modules/eslint/bin/eslint.js:93
        } catch {
                ^

SyntaxError: Unexpected token {
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:617:28)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Function.Module.runMain (module.js:694:10)
    at startup (bootstrap_node.js:204:16)
    at bootstrap_node.js:625:3
Run Code Online (Sandbox Code Playgroud)

我想知道导致此问题的缺失步骤是什么?我正在使用 Node.js v8.16.2 和 NPM v6.4.1。

jon*_*rpe 13

发生该错误的原因} catch {是一个相对较新的(ES2019)语言功能称为“可选捕获绑定”;在引入之前,在} catch (err) {语法上需要绑定捕获的错误(例如)。对于每个node.green,您至少需要 Node 10 才能拥有该语言功能。

那么为什么在 ESLint 中会发生这种情况呢?例如根据发布博客,版本 7 已经放弃了对 Node 8 的支持;他们不再针对该版本进行测试,并且将假定支持更现代的语言功能。

要修复它,请执行以下任一操作:

  1. 升级节点(节点 8 已超出 LTS,这就是 ESLint 放弃支持的原因);或者
  2. npm install eslint@6-g如果你想全局安装)使用旧版本的 ESLint 和 Node 8 支持。