Webstorm里使用Eslint的时候,会提示 TypeError: this.cliEngineCtor is not a constructor,这样的一个错误,知道应该是版本的错误,但具体版本怎么区别,Eslint的版本和Webstorm的版本如何对应,需要注意。

Eslint 6.x

如果使用的是Eslint 6.x的版本,要保证Webstorm的版本在2019.1.3或更高的版本。如果你暂时不想使用更高的工具版本,就需要将Eslint降级到 5.x

如果你不想降级Eslint,也暂时不想升级开发工具,那么也可以使用修改Webstorm的插件源码,点击右上角提示信息的Details,可以在控制台看到输出的错误信息

// 将你看到下面的这行代码改成下面的一行代码
this.cliEngine = require(this.basicPath + "lib/cli-engine");
// 替换成
this.cliEngine = require(this.basicPath + "lib/cli-engine").CLIEngine;

Eslint 8.x

如果你是在使用Eslint 8.x的时候出现的问题,那么就需要将WebStorm升级到2021.2.2版本以上才可以,或是将Eslint降级到7.x6.x

如果你不想升级开发工具,也不想降级Eslint,那么也可以修改上面同样的插件源码。

// 可以将你看到的下面的这行代码,替换成下面的一行代码 
this.cliEngineCtor = requireInContext(eslintPackagePath + "lib/api", state.packageJsonPath).CLIEngine;
 
// 替换成这行代码
this.cliEngineCtor = requireInContext(eslintPackagePath + "lib/cli-engine").CLIEngine;

到此,就基本上解决了相关的错误提示问题,如果还是不行,还是升级版本或降级版本吧。