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()
我的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()