// code snippet
avec la configuration tslint.json
:
{
"defaultSeverity": "error",
"extends": [
"tslint-eslint-rules"
],
"jsRules": {},
"rules": {}
}
quand je change tslint.json
en
{
"defaultSeverity": "error",
"extends": "tslint-eslint-rules",
"jsRules": {},
"rules": {}
}
c'est le spectacle A path in an 'extends' option must be relative or rooted, but 'tslint-eslint-rules' is not
comment puis-je obtenir le chemin de tslint-eslint-rules
Vous confondez tslint.json
et tsconfig.json
Je suis sûr que je ne suis pas confus. Dans la version 5.8.1
, c'est correct.
Le même problème ici.
Modifié
"extends": [
"tslint:recommended"
],
à
"extends": "./node_modules/tslint/lib/configs/recommended"
à réparer.
A path in an 'extends' option must be relative or rooted, but 'xxx' is not
provient du compilateur dactylographié si votre tsconfig .json est erroné. Donc, soit vous utilisez -p tslint.json
soit vous avez du contenu qui devrait être dans tslint.json ajouté à votre tsconfig.json.
Un autre utilisateur confus ici.
Nous appelons tslint depuis la CLI en utilisant
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
Cela a très bien fonctionné l'année dernière. Nous venons de mettre à jour vers tslint 5.9.1 et voyons la même erreur :
error TS5024: Compiler option 'extends' requires a value of type string.
Notre tslint.json
a les 2 extensions suivantes
{
"extends": [
"tslint:recommended",
"tslint-sonarts"
],
Pourriez-vous nous donner un peu plus d'informations sur ce qui a changé et comment nous pouvons à nouveau résoudre ce problème ?
Au cas où cela serait effectivement pertinent, notre tsconfig ressemble à
{
"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 quels sont les arguments CLI exacts que vous utilisez ? Je pense que vous utilisez peut-être la même configuration invalide que les autres journalistes de ce fil de discussion - le drapeau --project
doit pointer vers un fichier tsconfig.json
, pas tslint.json
.
@MartijnKooij , des modifications ont été apportées à la mise en œuvre de la fonctionnalité extends
dans tslint.json dans la version 5.9, ce qui a dû entraîner par inadvertance l'arrêt de votre configuration invalide. Comme je l'ai dit plus haut, vous devez pointer --project
vers un fichier tsconfig.json. Aucun des documents TSLint n'a jamais affirmé que --project path/to/tslint.json
est un modèle d'utilisation pris en charge.
Merci pour l'explication supplémentaire, je n'ai pas compris quand @ajafff a dit que nous avions le tslint au lieu du tsconfig comme paramètre --project.
Je suppose que quelque part il y a un article de blog sur l'utilisation de tslint qui contient cette erreur.
La documentation sur https://palantir.github.io/tslint/usage/cli/ à ce sujet est correcte, du moins maintenant elle l'est ;)
Merci encore, et pour l'exhaustivité et les autres. Nous avons changé:
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
dans ce
"lint": "tslint --project tsconfig.json -e src/**/*.spec.*",
@ajafff @adidahiya Je suis vraiment désolé, c'est de ma faute, merci beaucoup !
mocha-tslint ne fonctionne plus à cause de ce problème également. Et là, configFilePath doit pointer vers tslint.json. si j'utilise tsconfig.json à la place :
const lint = require('mocha-tslint');
const configFilePath = './tsconfig.json';
lint(configFilePath);
j'obtiens ce résultat :
tslint
No valid rules have been specified
Il fonctionnait toujours avec 5.8
@DaveXCS Cela est probablement dû au fait que mocha-tslint
fait quelque chose de mal. Je suppose qu'ils utilisent une API privée (runner.ts) et utilisent le fichier de configuration comme argument -c
AND -p
.
J'ai essayé de comprendre le problème dans mocha-tslint mais je ne vois pas vraiment de problème ici :
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 Le problème est cette ligne : https://github.com/t-sauer/mocha-tslint/blob/0ba7f64be458cd74343a4149dff323d5bfd195a5/index.js#L24
Il ne doit pas transmettre le chemin vers tslint.json
à une fonction qui attend le chemin vers un tsconfig.json
J'ai ouvert un numéro pour vous : https://github.com/t-sauer/mocha-tslint/issues/9
Merci de votre aide.
j'ai remplacé le --project sur le cli par tsconfig.json au lieu de tslint.json et j'ai réécrit "mocha-tslint" (y compris la vérification de type):
https://gist.github.com/DaveXCS/3bd930f7093b748f551c99e80d57c578
c'est scandaleusement mal documenté, juste déroutant et pas du tout intuitif.
@devguyrun la documentation d'utilisation de la --project
vers un fichier tsconfig.json
. Si vous pensez que cela pourrait être plus clair, n'hésitez pas à envoyer un PR
erreur TS18001 : un chemin dans une option 'extends' doit être relatif ou rooté, mais '<%= sourcedir.split('/').map(x => '..').join('/') %
/tsconfig.json' ne l'est pas.
J'ai une autre erreur.
Commentaire le plus utile
@ StanLee12 quels sont les arguments CLI exacts que vous utilisez ? Je pense que vous utilisez peut-être la même configuration invalide que les autres journalistes de ce fil de discussion - le drapeau
--project
doit pointer vers un fichiertsconfig.json
, pastslint.json
.@MartijnKooij , des modifications ont été apportées à la mise en œuvre de la fonctionnalité
extends
dans tslint.json dans la version 5.9, ce qui a dû entraîner par inadvertance l'arrêt de votre configuration invalide. Comme je l'ai dit plus haut, vous devez pointer--project
vers un fichier tsconfig.json. Aucun des documents TSLint n'a jamais affirmé que--project path/to/tslint.json
est un modèle d'utilisation pris en charge.