【问题标题】:WebStorm 2018.1.4 + ESLint: TypeError: this.CliEngine is not a constructorWebStorm 2018.1.4 + ESLint: TypeError: this.CliEngine 不是构造函数
【发布时间】:2020-01-16 13:26:35
【问题描述】:

我的配置是这样的。

WebStorm 2018.1.4; ESLint 6.4;节点 12.8; npm 6.10.2; Windows 8.1。

如何消除线程标题中的错误?

这是一个代码示例。

import {
  GET_DAILY_SUCCESS,
  GET_HOURLY_SUCCESS,
  GET_MINUTE_SUCCESS
} from './types';
import {
  getDailyToUsd,
  getHourlyToUsd,
  getMinuteToUsd
} from '../api/cryptocompare';
import { setError } from './error';

export const getDaily = (fsym = 'BTC') => async dispatch => {
  try {
    const list = await getDailyToUsd(fsym);

    dispatch({
      type: GET_DAILY_SUCCESS,
      currency: fsym,
      list
    });
  } catch(err) {
    dispatch(setError(err.Message));
  }
};

【问题讨论】:

    标签: reactjs eslint webstorm


    【解决方案1】:

    WEB-38922 在 2019.1.3 中修复。 问题在于 ESLint 版本 6.x。如果升级 Webstorm 不适合你,你必须降级到 ESLint 版本 5:

    npm install --save-dev eslint@5
    

    更新:如果您在使用 ESLint 8 时看到类似的错误,请确保升级到支持它的版本 2021.2.2(请参阅WEB-52236)

    【讨论】:

    • 为我工作(更新至 2021.2.2)。谢谢!
    • 谢谢! Webstorm 2021.2.3 中没有错误
    • 现在 Eslint 7 可以正常工作了。
    【解决方案2】:

    在我的 Webstorm 2021.2 中有一个稍微不同的错误this.CliEngineCtor is not a constructor。

    这与更新 eslint 到 8.0.1 有关。

    解决方案:将 WebStorm 更新到最新版本 2021.2.2 或更高版本

    【讨论】:

      【解决方案3】:

      这是另一个solution from Dmitry Babenko,它可以让你使用带有 WebStorm 后备许可证的 ESLint 6.x:

      • 等待this.CliEngine is not a constructor 气球出现,然后点击“详细信息”
      • 按照堆栈跟踪中的第一个链接到 eslint-plugin.js 文件
      • 在顶部找到以下行:
        this.CliEngine = require(this.basicPath + "lib/cli-engine");
        并将其替换为以下内容:
        this.CliEngine = require(this.basicPath).CLIEngine;
      • 重启IDEA

      【讨论】:

      • 完美运行
      • 我的看起来像这样... this.cliEngineCtor = requireInContext(eslintPackagePath + "lib/api", state.packageJsonPath).CLIEngine;
      【解决方案4】:

      我正在使用 Webstorm2021.2.1,我发现 eslint@8.0.0 与它不兼容。 这对我有用:

      yarn add -D eslint@7.14.0
      

      【讨论】:

        【解决方案5】:

        除了Dabrule回答:

        对于 eslint v8 替换此行:

        this.cliEngineCtor = requireInContext(eslintPackagePath + "lib/api", state.packageJsonPath).CLIEngine;
        

        到那个:

        this.cliEngineCtor = requireInContext(eslintPackagePath + "lib/cli-engine").CLIEngine;
        

        文件位置,例如RubyMine(WebStorm应该类似):
        RubyMine-2021.1.3/plugins/JavaScriptLanguage/languageService/eslint/bin/eslint-plugin.js

        【讨论】:

        • 为我工作:RubyMine-2021.1.3。最棒的是,无需降级 ESLint,也无需升级 RubyMine / WebStorm。
        猜你喜欢
        • 2021-01-27
        • 2021-12-21
        • 2019-08-14
        • 2018-06-27
        • 2016-04-16
        • 2021-11-26
        • 2019-10-27
        相关资源
        最近更新 更多