gulp-eslint 环境键“es2021”未知
我有一个具有以下依赖项的项目;
"dependencies": {
"express": "^4.17.1"
},
"devDependencies": {
"browser-sync": "^2.26.13",
"del": "^6.0.0",
"eslint": "^7.16.0",
"eslint-config-standard": "^16.0.2",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.2.1",
"gulp": "^4.0.2",
"gulp-cssmin": "^0.2.0",
"gulp-eslint": "^6.0.0",
"gulp-htmllint": "0.0.19",
"gulp-htmlmin": "^5.0.1",
"gulp-imagemin": "^7.1.0",
"gulp-jsmin": "^0.1.5"
当我尝试使用 eslint/gulp-eslint 运行 lint javascript 的 gulp 任务时;
function javascript() {
return src('private/script/**')
//.pipe(jsmin())
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failAfterError())
.pipe(dest('public/script'));
}
我收到以下错误;
Error: .eslintrc.json » eslint-config-standard:
Environment key "es2021" is unknown
我使用
npx eslint --init
生成以下配置文件;
{
"env": {
"browser": true,
"commonjs": true,
"es6": true
},
"extends": [
"standard"
],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parserOptions": {
"ecmaVersion": 2018
},
"rules": {
}
}
我已经完成 npm 安装,以确保我拥有最新版本的依赖项。我还在 guthub 上看到,错误可能与
gulp-eslint
有关,因为它是旧版本,可能没有使用
eslint
的当前版本,但是,我已将
gulp-eslint
package.json 更改为使用最新版本的
eslint
,但仍然没有成功。我还将 node/npm 更新为它们的最新 lts 版本。
我通过删除
gulp-eslint
的
node_modules
文件夹中的
eslint
文件夹来解决这个问题。这会强制节点使用您作为依赖项的版本,而不是项目维护者想要使用的版本。
问题在于 gulp-eslint 在 hub 下与 ESLint 6 一起工作,而 ESLint 6 不支持
es2021
环境(请参阅
ESLint 6 支持的环境
)。
我将展示三个选项来处理这个问题。最佳解决方案取决于您的设置和要求。
方法 1:用等效定义替换
es2021
es2021
环境与
es2020
相同,但增加了全局变量
AggregateError
、
FinalizationRegistry
和
WeakRef
(请参阅
es2021
的定义>
),因此您可以在 .eslintrc 配置文件中输入这些设置以获取相同的结果。
{
...
"env": {
...
"es2020": true
},
...
"globals": {
...
"AggregateError": "readonly",
"FinalizationRegistry": "readonly",
"WeakRef": "readonly"
},
...
}
方法 2:强制 gulp-eslint 使用 ESLint 7
如果您使用的是 npm >= 8.3 < 9.0(使用
npm -v
检查),你可以覆盖 gulp-eslint 使用的 ESLint 版本。
为此,首先向你的 package.json 文件中添加一个覆盖条目,如下所示:
{
...
"overrides": {
"gulp-eslint": {
"eslint": "7"
}
},
...
}
然后运行:
npm install
现在,gulp-eslint 将与最新版本的 ESLint 7 一起使用,该版本确实识别
es2021
环境(它存在于 ESLint >= 7.8 中)。
请注意,gulp-eslint 仍然不支持 ESLint 7,因此某些事情可能无法按预期工作。具体来说,某些插件可能无法加载或产生运行时错误。
方法 3:使用 gulp-eslint-new
gulp-eslint-new 适用于 ESLint 8,在大多数情况下可以用作 gulp-eslint 的替代品,前提是配置与两个版本兼容。
-
使用
卸载 gulp-eslintnpm uninstall gulp-eslint
-
使用
npm install -D 安装 gulp-eslint-new gulp-eslint-new
-
在您的 gulpfile 中,将
gulp-eslint
的导入替换为gulp-eslint-new
。
免责声明
:我目前是
gulp-eslint-new
的唯一维护者。