Tslint: La opción del compilador 'extiende' requiere un valor de tipo cadena

Creado en 11 ene. 2018  ·  17Comentarios  ·  Fuente: palantir/tslint

Informe de error

  • __TSLint versión__: 5.9.1
  • __Versión de TypeScript__: 2.6.2
  • __Ejecutando TSLint vía__: CLI

El código de TypeScript está entretejido

// code snippet

con tslint.json configuración:

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

Comportamiento real

Comportamiento esperado

Not A Bug

Comentario más útil

@ StanLee12 ¿ --project debe apuntar a un archivo tsconfig.json , no a tslint.json .

@MartijnKooij hubo algunos cambios en la implementación de la función extends en tslint.json en v5.9 que deben haber causado inadvertidamente que su configuración no válida dejara de funcionar. Como dije anteriormente, debe apuntar --project a un archivo tsconfig.json. Ninguno de los documentos de TSLint ha afirmado nunca que --project path/to/tslint.json sea ​​un patrón de uso admitido.

Todos 17 comentarios

cuando cambio tslint.json a

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

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

¿Cómo puedo obtener la ruta de tslint-eslint-rules

Estás confundiendo tslint.json y tsconfig.json

Estoy seguro de que no estoy confundido. En la versión 5.8.1 , es correcto.

El mismo problema aquí.
Cambió

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

para

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

arreglar.

A path in an 'extends' option must be relative or rooted, but 'xxx' is not proviene del compilador mecanografiado si su tsconfig .json es incorrecto. Entonces, o está usando -p tslint.json o tiene contenido que debería estar en tslint.json agregado a su tsconfig.json.

Otro usuario confundido aquí.
Estamos llamando a tslint desde la CLI usando
"lint": "tslint --project tslint.json -e src/**/*.spec.*",

Esto ha funcionado bien durante el año pasado. Recientemente, actualizamos a tslint 5.9.1 y estamos viendo el mismo error:

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

Nuestro tslint.json tiene las siguientes 2 extensiones

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

¿Podría darnos un poco más de información sobre lo que ha cambiado y cómo podemos solucionarlo de nuevo?

En caso de que sea realmente relevante, nuestro tsconfig parece

{
    "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 ¿ --project debe apuntar a un archivo tsconfig.json , no a tslint.json .

@MartijnKooij hubo algunos cambios en la implementación de la función extends en tslint.json en v5.9 que deben haber causado inadvertidamente que su configuración no válida dejara de funcionar. Como dije anteriormente, debe apuntar --project a un archivo tsconfig.json. Ninguno de los documentos de TSLint ha afirmado nunca que --project path/to/tslint.json sea ​​un patrón de uso admitido.

Gracias por la explicación adicional, no la entendí cuando @ajafff dijo que teníamos tslint en lugar de tsconfig como nuestro parámetro --project.
Supongo que en algún lugar hay una publicación de blog sobre el uso de tslint que contiene este error.
La documentación en https://palantir.github.io/tslint/usage/cli/ sobre esto es correcta, al menos ahora lo es;)

Gracias de nuevo, y por la completitud y otros. Cambiamos:
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
dentro de esto
"lint": "tslint --project tsconfig.json -e src/**/*.spec.*",

@ajafff @adidahiya Lo siento mucho, es mi culpa, ¡muchas gracias!

mocha-tslint ya no funciona debido a este problema. Y allí configFilePath debería apuntar a tslint.json. si uso tsconfig.json en su lugar:
const lint = require('mocha-tslint'); const configFilePath = './tsconfig.json'; lint(configFilePath);
obtengo este resultado:
tslint No valid rules have been specified

Siempre estuvo trabajando con 5.8

@DaveXCS Lo más probable es que esto se mocha-tslint hizo algo mal. Supongo que usan una API privada (runner.ts) y usan el archivo de configuración como -c AND -p argumento.

Traté de entender el problema en mocha-tslint pero realmente no veo ningún problema aquí:
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 El problema es esta línea: https://github.com/t-sauer/mocha-tslint/blob/0ba7f64be458cd74343a4149dff323d5bfd195a5/index.js#L24
No debe pasar la ruta a tslint.json a una función que espera la ruta a tsconfig.json

Abrí un problema para ti: https://github.com/t-sauer/mocha-tslint/issues/9

Gracias por su ayuda.
reemplacé el --project en el cli con tsconfig.json en lugar de tslint.json y reescribí "mocha-tslint" (incluida la verificación de tipos también):
https://gist.github.com/DaveXCS/3bd930f7093b748f551c99e80d57c578

esto está sorprendentemente mal documentado, simplemente confuso y nada intuitivo.

@devguyrun los documentos de uso de CLI le dicen que apunte --project a un archivo tsconfig.json varias veces. Si cree que podría ser más claro, no dude en enviar un PR

error TS18001: una ruta en una opción 'extiende' debe ser relativa o arraigada, pero '<% = sourcedir.split (' / '). map (x =>' .. '). join (' / ')%

/tsconfig.json 'no lo es.

Recibí algún otro error.

¿Fue útil esta página
0 / 5 - 0 calificaciones