【问题标题】:How to fix unexpected token in ESLint?如何修复 ESLint 中的意外令牌?
【发布时间】:2020-10-19 12:14:46
【问题描述】:

我在 Mac 上使用命令 npm install -g eslint 全局安装 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

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

【问题讨论】:

  • 你要么没有使用 Babel,要么没有允许你跳过错误“param”的设置(可选的 catch 绑定)——} catch (e) { 可以工作。
  • 我正在全局安装它。我需要在全局 eslint 文件夹中设置一些东西吗?我不明白为什么我需要添加参数。我只想展示我的 eslint 版本。
  • 您使用的是哪个版本的 Node
  • nodejs v8.16.2。对于 npm 6.4.1。
  • ESLint 7 放弃了对节点 8 的支持:eslint.org/blog/2020/05/eslint-v7.0.0-released。您需要该语言功能,这意味着至少节点 10:node.green/#ES2019-misc-optional-catch-binding

标签: npm eslint


【解决方案1】:

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

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

要修复它,要么:

  1. 升级节点(节点 8 是out of LTS,这就是 ESLint 放弃支持的原因);或
  2. npm install eslint@6(如果要全局安装,请使用 -g)以使用支持 Node 8 的旧版 ESLint。

【讨论】:

  • 这对我有帮助,但它只有在首先使用npm uninstall eslint 明确卸载过时的 lint 版本后才有效。感谢您的简洁解释!
  • 我的 Webstorm 出于某种原因指向节点 8,尽管我安装了 14 个。必须手动将 IDE 指向节点 14,错误显然消失了
  • 谢谢@IlyaKushlianski。这也是我的问题。
【解决方案2】:

如果它对任何人都有帮助,我对另一个答案的看法略有不同。就我而言,错误发生在 Travis CI 构建过程中并导致它失败。我的解决方案是将我的.travis.yml 文件更新为node_js: "16"

【讨论】:

    猜你喜欢
    • 2019-12-23
    • 2019-04-03
    • 2020-09-06
    • 2021-10-08
    • 1970-01-01
    • 2019-08-29
    • 2019-11-22
    • 1970-01-01
    • 2019-12-25
    相关资源
    最近更新 更多