JSHint 抑制可选链接的错误
JSHint suppress error for optional chaining
当我发现 optional chaining (?.
). I decided that I would need it in some code I was writing. When I finished typing out the code, I noticed that JSHint was giving me an error that stated Expected an identifier and instead saw '.'. (E030) jshint(E030)
. The following code runs without any error (MDN compatibility table) 时,我正在写一些 Javascript,但是 JSHint 仍然给出警告。
var x = {
y: {
z: 123
}
};
console.log(x.y?.z)
我找到了另一个与此相关的Whosebug question,但是这个问题专门询问了ESLint,而这个问题是关于JSHint的。我还搜索了 JSHint GitHub 存储库的问题选项卡,但我找不到任何东西。有什么办法可以抑制这种错误?我正在使用 Visual Studio 内部代码。
编辑信息取自Code - Insiders > About Visual Studio Code - Insiders
:
Version: 1.48.0-insider
Commit: d13d2fc56da7a2f8bcad4256212db0661fcbba45
Date: 2020-08-05T05:26:44.946Z (20 hrs ago)
Electron: 7.3.2
Chrome: 78.0.3904.130
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Darwin x64 19.5.0
https://github.com/jshint/jshint/issues/3448 中有一个未解决的问题。
它建议“您可以使用 ignore:start
/ignore:end
或 ignore:line
指令使 JSHint 传递它无法识别的任何语法。”
添加:"esversion": 11
到您的 jshint 文件。版本 11 中添加了可选链接。
用yarn升级好像不行
node -v
v16.2.0
.jshint 在项目文件夹中
cat .jshintrc
{
"-W138": true,
"-W083": true,
"esversion": 11
}
来自 package.json:
"grunt-contrib-jshint": "^3.0.0",
"jshint": "^2.13.1",
来自 gruntfile.js
jshint: {
options: {
"-W138": true,
"-W083": true,
"jshintrc": true,
esversion: 11
},
files: ['src/js/**/*.js']
},
结果:
grunt jshint:files
if (response?.errCode != 200) {
^ Expected an identifier and instead saw '.'.
一些调查:
node_modules/grunt-contrib-jshint/node_modules/jshint/package.json
"repository": {
"type": "git",
"url": "https://github.com/jshint/jshint.git"
},
在存储库中是正确的 (2.13.1) 版本的 jshint 但在我的项目中它没有更新(仍然有 2.12.0)
解决方案 #1:
throw new Exception(response?.errMessage); /* jshint ignore:line */
解决方案 #2:
cd node_modules
cp -Rp jshint grunt-contrib-jshint/node_modules/
当我发现 optional chaining (?.
). I decided that I would need it in some code I was writing. When I finished typing out the code, I noticed that JSHint was giving me an error that stated Expected an identifier and instead saw '.'. (E030) jshint(E030)
. The following code runs without any error (MDN compatibility table) 时,我正在写一些 Javascript,但是 JSHint 仍然给出警告。
var x = {
y: {
z: 123
}
};
console.log(x.y?.z)
我找到了另一个与此相关的Whosebug question,但是这个问题专门询问了ESLint,而这个问题是关于JSHint的。我还搜索了 JSHint GitHub 存储库的问题选项卡,但我找不到任何东西。有什么办法可以抑制这种错误?我正在使用 Visual Studio 内部代码。
编辑信息取自Code - Insiders > About Visual Studio Code - Insiders
:
Version: 1.48.0-insider
Commit: d13d2fc56da7a2f8bcad4256212db0661fcbba45
Date: 2020-08-05T05:26:44.946Z (20 hrs ago)
Electron: 7.3.2
Chrome: 78.0.3904.130
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Darwin x64 19.5.0
https://github.com/jshint/jshint/issues/3448 中有一个未解决的问题。
它建议“您可以使用 ignore:start
/ignore:end
或 ignore:line
指令使 JSHint 传递它无法识别的任何语法。”
添加:"esversion": 11
到您的 jshint 文件。版本 11 中添加了可选链接。
用yarn升级好像不行
node -v
v16.2.0
.jshint 在项目文件夹中
cat .jshintrc
{
"-W138": true,
"-W083": true,
"esversion": 11
}
来自 package.json:
"grunt-contrib-jshint": "^3.0.0",
"jshint": "^2.13.1",
来自 gruntfile.js
jshint: {
options: {
"-W138": true,
"-W083": true,
"jshintrc": true,
esversion: 11
},
files: ['src/js/**/*.js']
},
结果:
grunt jshint:files
if (response?.errCode != 200) {
^ Expected an identifier and instead saw '.'.
一些调查:
node_modules/grunt-contrib-jshint/node_modules/jshint/package.json
"repository": {
"type": "git",
"url": "https://github.com/jshint/jshint.git"
},
在存储库中是正确的 (2.13.1) 版本的 jshint 但在我的项目中它没有更新(仍然有 2.12.0)
解决方案 #1:
throw new Exception(response?.errMessage); /* jshint ignore:line */
解决方案 #2:
cd node_modules
cp -Rp jshint grunt-contrib-jshint/node_modules/