简体   繁体   中英

ESLint - Shows Issue Trying to Lint but Lints File

I'm using ESLint in an Angular project.

I set-up the js files in the cypress folder (my e2e tests) to have different rules by anding overrides in the.eslintrc.js file, like so:

module.exports = {
  env: {
    browser: true,
    es6: true,
    node: true
  },
  extends: ["prettier", "prettier/@typescript-eslint", "plugin:prettier/recommended"],
  parser: "@typescript-eslint/parser",
  parserOptions: {
    project: "tsconfig.json",
    sourceType: "module"
  },
  plugins: [ 
    "eslint-plugin-import",
    "eslint-plugin-jsdoc",
    "@angular-eslint/eslint-plugin",
    "@typescript-eslint",
    "@typescript-eslint/tslint",
    "eslint-plugin-html"
 ],
  rules: {
    "prefer-const": "error",
    "@angular-eslint/component-class-suffix": "error",
    "@angular-eslint/directive-class-suffix": "error",
    "@angular-eslint/no-host-metadata-property": "error",
    "@angular-eslint/no-input-rename": "error",
    "@angular-eslint/no-inputs-metadata-property": "error",
    "@angular-eslint/no-output-on-prefix": "error",
    "@angular-eslint/no-output-rename": "error",
    "@angular-eslint/no-outputs-metadata-property": "error",
    "@angular-eslint/use-lifecycle-interface": "error",
    "@angular-eslint/use-pipe-transform-interface": "error",
    "@typescript-eslint/consistent-type-definitions": "error",
    "@typescript-eslint/dot-notation": "off",
    "@typescript-eslint/explicit-member-accessibility": [
      "off",
      {
        accessibility: "explicit"
      }
    ],
    "@typescript-eslint/indent": ["off"],
    "@typescript-eslint/member-delimiter-style": [
      "error",
      {
        multiline: {
          delimiter: "semi",
          requireLast: true
        },
        singleline: {
          delimiter: "semi",
          requireLast: false
        }
      }
    ],
    "@typescript-eslint/member-ordering": "off",
    "@typescript-eslint/naming-convention": "off",
    "@typescript-eslint/no-empty-function": "off",
    "@typescript-eslint/no-empty-interface": "error",
    "@typescript-eslint/no-inferrable-types": [
      "error",
      {
        ignoreParameters: true
      }
    ],
    "@typescript-eslint/no-misused-new": "error",
    "@typescript-eslint/no-non-null-assertion": "error",
    "@typescript-eslint/prefer-function-type": "error",
    "@typescript-eslint/quotes": "off",
    "@typescript-eslint/semi": ["error", "always"],
    "@typescript-eslint/type-annotation-spacing": "error",
    "@typescript-eslint/unified-signatures": "error",
    "arrow-body-style": ["off"],
    "arrow-parens": ["off", "always"],
    "brace-style": ["error", "1tbs"],
    "comma-dangle": "off",
    "constructor-super": "error",
    curly: "error",
    "eol-last": "error",
    eqeqeq: ["error", "smart"],
    "guard-for-in": "error",
    "id-blacklist": "off",
    "id-match": "off",
    "import/no-deprecated": "warn",
    "jsdoc/no-types": "error",
    "linebreak-style": "off",
    "max-len": [
      "error",
      {
        code: 140
      }
    ],
    "new-parens": "off",
    "newline-per-chained-call": "off",
    "no-bitwise": "error",
    "no-caller": "error",
    "no-console": [
      "error",
      {
        allow: [
          "log",
          "dirxml",
          "warn",
          "error",
          "dir",
          "timeLog",
          "assert",
          "clear",
          "count",
          "countReset",
          "group",
          "groupCollapsed",
          "groupEnd",
          "table",
          "Console",
          "markTimeline",
          "profile",
          "profileEnd",
          "timeline",
          "timelineEnd",
          "timeStamp",
          "context"
        ]
      }
    ],
    "no-debugger": "error",
    "no-empty": "off",
    "no-eval": "error",
    "no-extra-semi": "off",
    "no-fallthrough": "error",
    "no-irregular-whitespace": "off",
    "no-multiple-empty-lines": "off",
    "no-new-wrappers": "error",
    "no-restricted-imports": ["error", "rxjs/Rx"],
    "no-shadow": [
      "off",
      {
        hoist: "all"
      }
    ],
    "@typescript-eslint/no-shadow": ["error"],
    "no-throw-literal": "error",
    "no-trailing-spaces": "error",
    "no-undef-init": "error",
    "no-underscore-dangle": "off",
    "no-unused-labels": "error",
    "no-var": "error",
    "prefer-const": "error",
    "quote-props": "off",
    radix: "error",
    "react/jsx-curly-spacing": "off",
    "react/jsx-equals-spacing": "off",
    "react/jsx-wrap-multilines": "off",
    "space-before-function-paren": "off",
    "space-before-blocks": "error",
    "space-in-parens": ["off", "never"],
    "spaced-comment": [
      "error",
      "always",
      {
        markers: ["/"]
      }
    ],
    "@typescript-eslint/tslint/config": [
      "error",
      {
        rules: {
          "import-spacing": true,
          whitespace: [true, "check-branch", "check-decl", "check-operator", "check-separator", "check-type"],
        }
      }
    ]
  },
  overrides: [
    {
      files: ["cypress/**/*.js"],
      rules: {
        "space-before-blocks": "error",
        "no-var": "off",
        "no-bitwise": "off",
        "eqeqeq": "off",
        "prefer-const": "off"
      }
    }
  ]
};

I resolved all the lint issue in those folders, and then, when I ran lint, it showed an message saying "Tried to lint {file-name} but found no valid, enabled rules for this file type and file path in the resolved configuration".

I don't understand, the files are being linted, but the message says it's not. Here's a screen shot, I purposely caused a lint error. You'll see the above message saying "Tried to lint...but found no valid..." and then underneath it it shows that the file was actually linted (because it shows the lint error).

在此处输入图像描述

Why is this happening? I suppose it's not stopping me from linting my code, but it's annoying.

I see you've added @typescript-eslint/tslint plugin in your eslintrc file.

So seems you have tslint.json file included in your project and you'll need to add a rule to tslint.json

Issue: https://github.com/palantir/tslint/issues/3735#issuecomment-368520472

"jsRules": {
   "no-empty": true
}

I was able to resolve this by adding an override section for js files that ignore the rule, like so:

overrides: [
    {
      files: ["**/*.js"],
      rules: {
        "@typescript-eslint/tslint/config": ["off"] //this is the rule that was causing the message, but you can add other rules here
      }
    }
  ]

I added this section outside of the main rules section.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM