ESLint:let 的第一个实例导致 "unexpected token" 错误

ESLint: First instance of let results in "unexpected token" error

我的javascript:

let foo = 'bar'

为什么 ESLint 响应如下?

~/index.js
  1:5  error  Parsing error: Unexpected token foo

✖ 1 problem (1 error, 0 warnings)

似乎无论在脚本的哪个位置,使用 let 设置变量的第一个实例都会出现此错误。为什么??

我的 .eslintrc 文件:

module.exports = {
    "env": {
        "node": true
    },
    "extends": "eslint:recommended",
    "rules": {
        "indent": [
            "error",
            "tab"
        ],
        "linebreak-style": [
            "error",
            "unix"
        ],
        "quotes": [
            "error",
            "single"
        ],
        "semi": [
            "error",
            "never"
        ]
    }
};

用 let 声明的变量在其封闭块中声明之前不可访问 - 因此第一个元素将是未定义的,直到命中封闭块。如果您在全局命名空间中定义 foo,则在循环中使用 let 时总是会出现此错误。

关于let在全局范围内被禁止的答案是错误的。没关系。

问题是你需要让 eslint 知道你正在使用 es6 特性。

通过将 "es6": true 行添加到配置中的 env 块来实现:

.eslintrc.js

module.exports = {
    "env": {
        "node": true,
        "es6": true
    },
    "extends": "eslint:recommended",
    "rules": {
        "indent": [
            "error",
            "tab"
        ],
        "linebreak-style": [
            "error",
            "unix"
        ],
        "quotes": [
            "error",
            "single"
        ],
        "semi": [
            "error",
            "never"
        ]
    }
};

这修复了您的特定错误,但您很快就会看到有关未使用名称的错误。以下是我能找到的将通过您的 eslint 设置的最少源代码:

let.js

let foo = 'bar'

function main() {
  foo
}

main()