[英]VSCode ESLint howto fix parsing error: 'import' and 'export' may only appear at the top level
NOTE: The Code is working, only ESLint is giving me an error which i want to fix!!注意:代码正在运行,只有 ESLint 给了我一个我想修复的错误!!
When doing a dynamic import:进行动态导入时:
if (true) import x from 'y'; //Parsing error: 'import' and 'export' may only appear at the top level
my .eslintrc我的.eslintrc
{
"root": true,
"extends": "eslint:recommended",
"env": {
"es6": true,
"node": true,
"browser": true
},
"parserOptions": {
"ecmaVersion": 10,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"rules": {
"strict": 0,
"no-undef": 2,
"accessor-pairs": 2,
"comma-dangle": [2, "always-multiline"],
"consistent-return": 2,
"dot-notation": 2,
"eqeqeq": 2,
"indent": [2, 2, {"SwitchCase": 1}],
"no-cond-assign": 2,
"no-constant-condition": 2,
"no-eval": 2,
"no-inner-declarations": [0],
"no-unneeded-ternary": 2,
"radix": 2,
"semi": [2, "always"],
"camelcase": 2,
"comma-spacing": 2,
"comma-style": 2,
"eol-last": 2,
"linebreak-style": [2, "unix"],
"new-parens": 2,
"no-lonely-if": 2,
"no-multiple-empty-lines": 2,
"no-nested-ternary": 2,
"no-spaced-func": 2,
"no-trailing-spaces": 2,
"operator-linebreak": 2,
"quotes": [2, "single"],
"semi-spacing": 2,
"space-unary-ops": 2,
"arrow-parens": 2,
"arrow-spacing": 2,
"no-class-assign": 2,
"no-dupe-class-members": 2,
"no-var": 2,
"object-shorthand": 2,
"prefer-const": 2,
"prefer-spread": 2,
"prefer-template": 2
},
i already tried:我已经尝试过:
...switching ecmaVersion
to, 11, 2018, 2019, 2020 which give me either wrong number or parser didn't work anymore ...将
ecmaVersion
切换到 11, 2018, 2019, 2020 这给我错误的数字或解析器不再工作
...added parser: babel-eslint
which make the parser not work anymore ...添加
parser: babel-eslint
使解析器不再工作
...added allowImportsExportsAnywhere: true
which did nothing ...添加了
allowImportsExportsAnywhere: true
什么也没做
See https://eslint.org/blog/2019/08/eslint-v6.2.0-released#highlights见https://eslint.org/blog/2019/08/eslint-v6.2.0-released#highlights
This release adds support for ES2020 syntax, which includes support for Dynamic Imports and BigInt.
此版本增加了对 ES2020 语法的支持,其中包括对动态导入和 BigInt 的支持。 This can be enabled using
ecmaVersion: 2020
in your configuration file.这可以在您的配置文件中使用
ecmaVersion: 2020
启用。
That would seem to suggest adding this to your .eslintrc.json
file and reloading vscode:这似乎建议将此添加到您的
.eslintrc.json
文件并重新加载 vscode:
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
or "ecmaVersion": 11,
which is the same thing.或
"ecmaVersion": 11,
这是同一件事。
But I get a different error option about an invalid ecmaVersion
when I do that.但是当我这样做时,我得到了一个关于无效
ecmaVersion
的不同错误选项。 This seems to remove that error :这似乎消除了该错误:
"env": {
"browser": true,
"node": true,
"es2020": true
},
and no ecmaVersion
in the parserOptions
!并且
ecmaVersion
中没有parserOptions
! Apparently vscode's version of eslint doesn't support "ecmaVersion": 2020
yet.显然 vscode 的 eslint 版本还不支持
"ecmaVersion": 2020
。
const x =
your condition ? require("y") : () => null;
In your component在您的组件中
{ your condition ?(<x/>):("")}
Looks like the syntax is wrong.貌似语法不对。 Try this:
尝试这个:
if (true)
import('y').then((x) => {
console.log(x);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.