执行JSHint任务遇异常:添加esversion:6配置后仍触发相同报错
我之前也碰到过一模一样的问题!折腾了好一会儿才摸清楚几个可能的原因,你可以挨个排查下:
检查.jshintrc的位置与格式正确性
确保.jshintrc文件放在项目的根目录下,而且JSON格式完全合法——很多时候问题出在多余的逗号或者语法错误上。比如正确的配置示例:{ "esversion": 6, "undef": true, "unused": true }另外,有些IDE(比如VS Code)可能需要重启或者重新加载项目,才能识别到配置文件的变更。
确认JSHint版本是否支持ES6
JSHint在2.9.0版本之后才全面支持ES6的esversion:6配置,如果你用的是老版本,配置肯定不会生效。你可以在终端运行以下命令查看当前版本:jshint --version如果版本低于2.9.0,赶紧升级到最新版:
npm install jshint@latest --save-dev调整内联注释的位置
内联的/*jshint esversion: 6 */注释必须放在文件的最顶部,甚至要优先于其他注释(比如版权声明)。举个正确的例子:/*jshint esversion: 6 */ // 项目版权声明 const username = 'test'; const getUserInfo = () => { /* ... */ };如果注释放在代码后面,JSHint可能已经先解析了前面的ES6语法,导致报错。
排查构建工具/编辑器的配置覆盖
如果你用Grunt、Gulp或者Webpack这类构建工具的JSHint插件,要检查插件的配置是否覆盖了全局的.jshintrc设置。比如Gruntfile里可能有这样的代码:jshint: { options: { esversion: 5 // 这里的配置会覆盖.jshintrc的设置! }, all: ['src/**/*.js'] }另外,有些编辑器的JSHint插件也可能自带配置,需要在编辑器设置里确认没有强制设置
esversion为更低版本。检查单个文件的特殊指令
看看报错的文件里有没有其他JSHint注释,比如/*jshint esversion: 5 */,这种局部指令会直接覆盖全局或者内联的配置,导致ES6语法检测失败。
希望这些方法能帮你解决问题,我当时是因为JSHint版本太老,升级之后就完全正常了!
内容的提问来源于stack exchange,提问作者justcant

