问题
I am seeing a a red underline when I'm using an optional chain, but the code runs fine as I am on node 14
Here's my setup:
node 14.1.0
eslint "^6.8.0"
.eslintrc.js
module.exports = {
"env": {
"node": true
},
"extends": [
"eslint:recommended",
],
"parserOptions": {
"sourceType": "module",
"ecmaVersion": 2020
},
"rules": {
},
}
回答1:
You should use babel-eslint with your eslint config. This allows you to lint ALL valid Babel code with eslint. Currently eslint does not support all ES2020 features but a draft is proposed here
Run:
$ npm install babel-eslint --save-dev
# or
$ yarn add babel-eslint -D
Then in your .eslintrc do:
{
"parser": "babel-eslint"
}
UPDATE 24/07/2020 Support was released in version (v7.2.0) here.
UPDATE 20/11/2020
NOTE: babel-eslint
is now @babel/eslint-parser
and has moved into the Babel monorepo.
$ npm install @babel/eslint-parser --save-dev
# or
$ yarn add @babel/eslint-parser -D
Then in your .eslintrc
do:
{
parser: "@babel/eslint-parser",
}
回答2:
You no longer need @babel/eslint-parser
as eslint@^7.5
now supports optional chanining.
Run the following to update eslint within your project:
npm
npm install --save-dev eslint@^7.5
yarn
yarn add -D eslint@^7.5
And then, ensure your config is as follows:
.eslintrc
{
"parserOptions": {
"ecmaVersion": 2020
}
}
.eslint.js
module.exports = {
"parserOptions": {
"ecmaVersion": 2020
}
}
See https://eslint.org/blog/2020/07/eslint-v7.5.0-released#optional-chaining-support for more information.
回答3:
Not all JavaScript features enabled by Babel are included in ESLint.
You can use babel-eslint though:
$ npm install @babel/eslint-parser --save-dev
# or
$ yarn add @babel/eslint-parser -D
Then in your .eslintrc
do:
{
parser: "@babel/eslint-parser",
}
回答4:
First, you should have a ESLint parser that supports the optional chaining:
npm install -D @babel/eslint-parser
If you're facing issues with peer dependencies then run by appending --legacy-peer-deps
to the command.
Then, you should have the ESLint version that supports the optional chaining. This is that release version(7.5.0):
npm install eslint@^7.5
Tell your ESLint server to use the above-installed parser:
{
"parserOptions": {
"ecmaVersion": 2020
}
...
}
来源:https://stackoverflow.com/questions/61628947/eslint-optional-chaining-error-with-vscode