简体   繁体   English

更新TSLint错误:无法找到配置中指定的以下规则的实现

[英]Update TSLint Errors : Could not find implementations for the following rules specified in the configuration

I upgraded my tslint to 4.0.2 and now I get a lot of errors like the following 我将我的tslint升级到4.0.2,现在我收到了很多错误,如下所示

Could not find implementations for the following rules specified in the configuration:
    directive-selector-name
    component-selector-name
    directive-selector-type
    component-selector-type
    directive-selector-prefix
    component-selector-prefix
    label-undefined
    no-constructor-vars
    no-duplicate-key
    no-unreachable
    use-strict

I believe the issue may be that my tslint.json may be out of date and I need to update it, but I have not found any information on how to do that or even if my assumption is correct. 我相信问题可能是我的tslint.json可能已经过时了,我需要更新它,但我没有找到任何关于如何做到这一点的信息,或者即使我的假设是正确的。

tslint.json tslint.json

{
  "rulesDirectory": [
    "node_modules/codelyzer"
  ],
  "rules": {
    "directive-selector-name": [true, "camelCase"],
    "component-selector-name": [true, "kebab-case"],
    "directive-selector-type": [true, "attribute"],
    "component-selector-type": [true, "element"],
    "directive-selector-prefix": [true, "my"],
    "component-selector-prefix": [true, "my"],
    "use-input-property-decorator": true,
    "use-output-property-decorator": true,
    "use-host-property-decorator": true,
    "no-attribute-parameter-decorator": true,
    "no-input-rename": true,
    "no-output-rename": true,
    "no-forward-ref" :true,
    "use-life-cycle-interface": true,
    "use-pipe-transform-interface": true,
    "pipe-naming": [true, "camelCase", "my"],
    "component-class-suffix": true,
    "directive-class-suffix": true,
    "ban": [true,
      ["_", "extend"],
      ["_", "isNull"],
      ["_", "isDefined"]
    ],
    "class-name": true,
    "comment-format": [false,
      "check-space",
      "check-lowercase"
    ],
    "curly": true,
    "eofline": true,
    "forin": true,
    "indent": [true, 2],
    "interface-name": true,
    "jsdoc-format": true,
    "label-position": true,
    "label-undefined": true,
    "max-line-length": [false, 140],
    "member-ordering": [true,
      "public-before-private",
      "static-before-instance",
      "variables-before-functions"
    ],
    "no-arg": true,
    "no-bitwise": true,
    "no-console": [true,
      "debug",
      "info",
      "time",
      "timeEnd",
      "trace"
    ],
    "no-construct": true,
    "no-constructor-vars": false,
    "no-debugger": true,
    "no-duplicate-key": true,
    "no-duplicate-variable": true,
    "no-empty": true,
    "no-eval": true,
    "no-string-literal": true,
    "no-switch-case-fall-through": true,
    "trailing-comma": true,
    "no-trailing-whitespace": true,
    "no-unused-expression": true,
    "no-unused-variable": true,
    "no-unreachable": true,
    "no-use-before-declare": true,
    "no-var-requires": true,
    "one-line": [true,
      "check-open-brace",
      "check-catch",
      "check-else",
      "check-whitespace"
    ],
    "quotemark": [true, "single"],
    "radix": true,
    "semicolon": true,
    "triple-equals": [true, "allow-null-check"],
    "typedef": [true,
      "callSignature",
      "indexSignature",
      "parameter",
      "propertySignature",
      "variableDeclarator"
    ],
    "typedef-whitespace": [true,
      ["callSignature", "noSpace"],
      ["catchClause", "noSpace"],
      ["indexSignature", "space"]
    ],
    "use-strict": false,
    "variable-name": false,
    "whitespace": [true,
      "check-branch",
      "check-decl",
      "check-operator",
      "check-separator",
      "check-type"
    ]
  }
}

packages.json packages.json

{
  "dependencies": {
    "@angular/common": "^2.2.4",
    "@angular/compiler": "^2.2.4",
    "@angular/core": "^2.2.4",
    "@angular/forms": "^2.2.4",
    "@angular/http": "^2.2.4",
    "@angular/platform-browser": "^2.2.4",
    "@angular/platform-browser-dynamic": "^2.2.4",
    "@angular/router": "^3.2.4",
    "@ng-bootstrap/ng-bootstrap": "^1.0.0-alpha.14",
    "ag-grid": "^7.0.0",
    "angularfire2": "^2.0.0-beta.5",
    "core-js": "^2.4.1",
    "firebase": "^3.6.2",
    "rxjs": "5.0.0-rc.4",
    "zone.js": "^0.7.2"
  },
  "devDependencies": {
    "del": "^2.0.2",
    "gulp": "gulpjs/gulp#4ed9a4a3275559c73a396eff7e1fde3824951ebb",
    "gulp-hub": "frankwallis/gulp-hub#d461b9c700df9010d0a8694e4af1fb96d9f38bf4",
    "gulp-filter": "^4.0.0",
    "gulp-util": "^3.0.7",
    "gulp-sass": "^2.1.1",
    "browser-sync": "^2.18.2",
    "browser-sync-spa": "^1.0.3",
    "karma": "^1.3.0",
    "karma-coverage": "^1.1.1",
    "karma-jasmine": "^1.0.2",
    "karma-junit-reporter": "^1.1.0",
    "jasmine": "^2.4.1",
    "es6-shim": "^0.35.0",
    "karma-chrome-launcher": "^2.0.0",
    "babel-plugin-istanbul": "^3.0.0",
    "karma-webpack": "^1.7.0",
    "webpack": "2.1.0-beta.20",
    "html-webpack-plugin": "^2.24.1",
    "style-loader": "^0.13.0",
    "css-loader": "^0.26.0",
    "postcss-loader": "^1.1.1",
    "autoprefixer": "^6.5.3",
    "json-loader": "^0.5.4",
    "extract-text-webpack-plugin": "^2.0.0-beta.3",
    "html-loader": "^0.4.3",
    "ts-loader": "^1.2.2",
    "sass-loader": "^4.0.2",
    "node-sass": "^3.13.0",
    "eslint": "^3.11.1",
    "eslint-config-xo-space": "^0.15.0",
    "eslint-loader": "^1.6.1",
    "babel-loader": "^6.2.8",
    "babel-eslint": "^7.1.1",
    "eslint-plugin-babel": "^4.0.0",
    "tslint": "^4.0.2",
    "typescript": "^2.0.10",
    "typings": "^2.0.0",
    "tslint-loader": "^3.2.1",
    "codelyzer": "^2.0.0-beta.1"
  },
  "scripts": {
    "build": "gulp",
    "serve": "gulp serve",
    "serve:dist": "gulp serve:dist",
    "test": "gulp test",
    "test:auto": "gulp test:auto"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "browser": true,
      "jasmine": true
    },
    "extends": [
      "xo-space/esnext"
    ]
  }
}

I was in the same boat. 我在同一条船上。 I don't know what your previous version of tslint was, but, for me, I upgraded from 3.15.1 to 4.0.2 and my resulting "broken rule" list is different than yours. 我不知道你以前的tslint版本是什么,但是,对我来说,我从3.15.1升级到了4.0.2,我生成的“破碎规则”列表与你的不同。 Still, I can offer you a few fixes/explanations to the ones you and I had in common. 不过,我可以为你和我的共同点提供一些修复/解释。

I just went to the tslint's changelog on GitHub , found the rule that was broken, got the issue number at the end of the line, & looked up the issue. 我刚刚在GitHub上找到了tslint的更改日志 ,发现了破坏的规则,在行尾收到了问题编号,并查找了问题。 Easiest way to navigate was to add the issue number to the end of their GitHub issue URL. 最简单的导航方法是将问题编号添加到GitHub问题URL的末尾。 For example, label-undefined was http//github.com/palantir/tslint/issues/877 例如, label-undefined是http // github.com / palantir / tslint / issues / 877

Here's the ones I had to figure out 这是我必须弄清楚的

  • label-undefined -> typescript compiler handles this now, so remove "label-undefined": true from tslint.json and then add "allowUnusedLabels": false to the compilerOptions section of your tsconfig.json label-undefined - > typescript编译器现在处理这个,所以从tslint.json中删除"label-undefined": true然后将"allowUnusedLabels": false添加到"allowUnusedLabels": false的compilerOptions部分
  • no-constructor-vars -> renamed the rule, so change "no-constructor-vars" to "no-parameter-properties" in your tslint.json no-constructor-vars - >重命名规则,因此在tslint.json中将"no-constructor-vars"更改为"no-parameter-properties"
  • no-duplicate-key -> remove "no-duplicate-key": true altogether b/c typescript now handles it (won't compile if dup keys). no-duplicate-key - >删除"no-duplicate-key": true完全为"no-duplicate-key": true b / c typescript现在处理它(如果是双键则不会编译)。
  • no-unreachable -> typescript compiler handles this now, so remove "no-unreachable": true from tslint.json and then add "noImplicitReturns": true to the compilerOptions section of your tsconfig.json no-unreachable - > typescript编译器现在处理这个,所以从tslint.json中删除"no-unreachable": true然后在"noImplicitReturns": true的compilerOptions部分添加"noImplicitReturns": true
  • use-strict -> remove "use-strict" rule altogether b/c typescript now parses all module bodies in strict mode. use-strict - >删除"use-strict"规则b / c typescript现在以严格模式解析所有模块体。

As of, codelyzer 2.0.0-beta.1 there are some breaking changes. 截至,codelyzer 2.0.0-beta.1有一些重大变化。 They removed directive-selector-name, component-selector-name, directive-selector-type, component-selector-type, directive-selector-prefix and component-selector-prefix are no longer supported. 他们删除了不再支持的directive-selector-name,component-selector-name,directive-selector-type,component-selector-type,directive-selector-prefix和component-selector-prefix。 Instead, they added the below rule: 相反,他们添加了以下规则:

"directive-selector": [true, "attribute", "app", "camelCase"],
"component-selector": [true, "element", "app", "kebab-case"],

Please look at the changelog for the codelyzer and search for any rule that is not supported 请查看codelyzer的更改日志并搜索不受支持的任何规则

tslint v4 removed a bunch of rules that no longer made sense and TypeScript checking got better. tslint v4删除了一堆不再有意义的规则,TypeScript检查变得更好。 You need to use tslint v3 if you still want to use those rules. 如果您仍想使用这些规则,则需要使用tslint v3。

I had the same problem after copying the rules from an angular project. 从角度项目复制规则后,我遇到了同样的问题。 Just create a new empty typescript project and you will be fine. 只需创建一个新的空打字稿项目,你就可以了。

I had this same issue with Could not find implementations for the following rules... warnings showing up in my IDE, WebStorm 2016.x. 我遇到了同样的问题, Could not find implementations for the following rules...警告出现在我的IDE,WebStorm 2016.x中。 In my case, the rule implementations were provided by the IDE, because upgrading my WebStorm fixed the issue. 就我而言,规则实现是由IDE提供的,因为升级我的WebStorm解决了这个问题。

I upgraded Typescript, TSLint & Codelyzer to no avail. 我升级了Typescript,TSLint和Codelyzer无济于事。 I inspected the contents of my tslint.json file and found nothing. 我检查了tslint.json文件的内容,什么也没找到。 Upgrading WebStorm fixed the issue. 升级WebStorm解决了这个问题。

I had the same issue after upgrading an Angular project. 升级Angular项目后我遇到了同样的问题。 Removing this rule resolved the issue for me: 删除此规则为我解决了这个问题:

"no-misused-new"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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