Tslint: Die Compileroption 'extends' erfordert einen Wert vom Typ string

Erstellt am 11. Jan. 2018  ·  17Kommentare  ·  Quelle: palantir/tslint

Fehlerbericht

  • __TSLint-Version__: 5.9.1
  • __TypeScript-Version__: 2.6.2
  • __TSLint ausführen über__: CLI

TypeScript-Code wird linted

// code snippet

mit tslint.json Konfiguration:

{
    "defaultSeverity": "error",
    "extends": [
         "tslint-eslint-rules"
     ],
    "jsRules": {},
    "rules": {}
}

Tatsächliches Verhalten

Erwartetes Verhalten

Not A Bug

Hilfreichster Kommentar

@StanLee12 Was sind die genauen CLI-Argumente, die Sie verwenden? Ich denke, Sie verwenden möglicherweise das gleiche ungültige Setup wie die anderen Reporter in diesem Thread - das Flag --project muss auf eine tsconfig.json Datei verweisen, nicht auf tslint.json .

@MartijnKooij es gab einige Änderungen an der Implementierung der extends Funktion in tslint.json in v5.9, die versehentlich dazu geführt haben müssen, dass Ihr ungültiges Setup nicht mehr funktioniert. Wie ich oben sagte, müssen Sie --project auf eine tsconfig.json-Datei zeigen. Keines der TSLint-Dokumente hat jemals behauptet, dass --project path/to/tslint.json ein unterstütztes Nutzungsmuster ist.

Alle 17 Kommentare

wenn ich tslint.json ändere in

{
    "defaultSeverity": "error",
    "extends":  "tslint-eslint-rules",
    "jsRules": {},
    "rules": {}
}

es ist Show A path in an 'extends' option must be relative or rooted, but 'tslint-eslint-rules' is not

Wie bekomme ich den Pfad von tslint-eslint-rules

Sie verwechseln tslint.json und tsconfig.json

Ich bin sicher, dass ich nicht verwirrt bin. In Version 5.8.1 ist es richtig.

Das gleiche Problem hier.
Geändert

"extends": [
    "tslint:recommended"
  ],

zu

"extends": "./node_modules/tslint/lib/configs/recommended"

reparieren.

A path in an 'extends' option must be relative or rooted, but 'xxx' is not kommt vom Typoskript-Compiler, wenn Ihre tsconfig .json falsch ist. Entweder verwenden Sie -p tslint.json oder Sie haben Inhalt, der in tslint.json enthalten sein sollte, zu Ihrer tsconfig.json hinzugefügt.

Ein weiterer verwirrter Benutzer hier.
Wir rufen tslint von der CLI aus mit . auf
"lint": "tslint --project tslint.json -e src/**/*.spec.*",

Das hat im letzten Jahr gut funktioniert. Gerade jetzt haben wir auf tslint 5.9.1 aktualisiert und sehen den gleichen Fehler:

error TS5024: Compiler option 'extends' requires a value of type string.

Unser tslint.json hat die folgenden 2 Erweiterungen

{
    "extends": [
        "tslint:recommended",
        "tslint-sonarts"
    ],

Könnten Sie uns etwas mehr Informationen darüber geben, was sich geändert hat und wie wir dies wieder beheben können?

Falls es tatsächlich relevant ist, sieht unsere tsconfig so aus

{
    "compileOnSave": false,
    "compilerOptions": {
        "lib": [
            "dom",
            "es2015"
        ],
        "noImplicitAny": false,
        "target": "es5",
        "rootDir": "src",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "sourceMap": true,
        "jsx": "preserve",
        "baseUrl": "src",
        "types": [
            "p-elements-core",
            "@types/jasmine",
            "@types/underscore",
            "@types/requirejs",
            "../../src/types"
        ]
    }
}

@StanLee12 Was sind die genauen CLI-Argumente, die Sie verwenden? Ich denke, Sie verwenden möglicherweise das gleiche ungültige Setup wie die anderen Reporter in diesem Thread - das Flag --project muss auf eine tsconfig.json Datei verweisen, nicht auf tslint.json .

@MartijnKooij es gab einige Änderungen an der Implementierung der extends Funktion in tslint.json in v5.9, die versehentlich dazu geführt haben müssen, dass Ihr ungültiges Setup nicht mehr funktioniert. Wie ich oben sagte, müssen Sie --project auf eine tsconfig.json-Datei zeigen. Keines der TSLint-Dokumente hat jemals behauptet, dass --project path/to/tslint.json ein unterstütztes Nutzungsmuster ist.

Danke für die zusätzliche Erklärung, ich habe es nicht verstanden, als @ajafff sagte, wir hätten den tslint anstelle der tsconfig als unseren --project-Parameter.
Ich vermute, dass es irgendwo da draußen einen Blogbeitrag über die Verwendung von Tslint gibt, der diesen Fehler enthält.
Die Dokumentation auf https://palantir.github.io/tslint/usage/cli/ dazu ist richtig, zumindest jetzt ;)

Nochmals vielen Dank und für Vollständigkeit und andere. Wir haben uns verändert:
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
das sehr gut finden
"lint": "tslint --project tsconfig.json -e src/**/*.spec.*",

@ajafff @adidahiya Es tut mir so leid, es ist meine Schuld, vielen Dank!

mocha-tslint funktioniert wegen dieses Problems auch nicht mehr. Und dort sollte configFilePath auf tslint.json zeigen. wenn ich stattdessen tsconfig.json verwende:
const lint = require('mocha-tslint'); const configFilePath = './tsconfig.json'; lint(configFilePath);
ich bekomme dieses ergebnis:
tslint No valid rules have been specified

Es funktionierte immer mit 5.8

@DaveXCS Das wird höchstwahrscheinlich dadurch verursacht, dass mocha-tslint etwas falsch macht. Ich denke, sie verwenden eine private API (runner.ts) und verwenden die Konfigurationsdatei als -c AND -p Argument.

Ich habe versucht, das Problem in Mocha-Tslint zu verstehen, aber ich sehe hier kein wirkliches Problem:
const tslintConfig = Configuration.loadConfigurationFromPath(configFilePath); fileNames.forEach((file) => test(file, tslintConfig));
const TSLint = require('tslint'); const Linter = TSLint.Linter; const Configuration = TSLint.Configuration;
fs.readFile(file, (err, sourceBuffer) => { const linter = new Linter(options); const source = sourceBuffer.toString(); linter.lint(file, source.toString(), config);

@DaveXCS Das Problem ist diese Zeile: https://github.com/t-sauer/mocha-tslint/blob/0ba7f64be458cd74343a4149dff323d5bfd195a5/index.js#L24
Es sollte den Pfad zu tslint.json an eine Funktion übergeben, die den Pfad zu einem tsconfig.json erwartet

Ich habe eine Ausgabe für Sie geöffnet: https://github.com/t-sauer/mocha-tslint/issues/9

Vielen Dank für Ihre Hilfe.
ich habe das --project in der cli durch tsconfig.json anstelle von tslint.json ersetzt und "mocha-tslint" umgeschrieben (auch mit Typprüfung):
https://gist.github.com/DaveXCS/3bd930f7093b748f551c99e80d57c578

das ist erschreckend schlecht dokumentiert, einfach verwirrend und überhaupt nicht intuitiv.

@devguyrun Die CLI-Verwendungsdokumentation weist Sie an, --project mehrmals auf eine tsconfig.json Datei zu verweisen. Wenn Sie denken, dass es klarer sein könnte, senden Sie gerne eine PR

error TS18001: Ein Pfad in einer 'extends'-Option muss relativ oder gerootet sein, aber '<%= sourcedir.split('/').map(x => '..').join('/') %

/tsconfig.json' ist es nicht.

Ich habe einen anderen Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

DanielKucal picture DanielKucal  ·  3Kommentare

avanderhoorn picture avanderhoorn  ·  3Kommentare

dashmug picture dashmug  ·  3Kommentare

cateyes99 picture cateyes99  ·  3Kommentare

denkomanceski picture denkomanceski  ·  3Kommentare