Tslint: A opção do compilador 'extends' requer um valor do tipo string

Criado em 11 jan. 2018  ·  17Comentários  ·  Fonte: palantir/tslint

Relatório de erro

  • __TSLint version__: 5.9.1
  • __TypeScript version__: 2.6.2
  • __Executando TSLint via__: CLI

Código TypeScript sendo vinculado

// code snippet

com configuração tslint.json :

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

Comportamento real

Comportamento esperado

Not A Bug

Comentários muito úteis

@ StanLee12 quais são os argumentos CLI exatos que você está usando? Eu acho que você pode estar usando a mesma configuração inválida que os outros repórteres neste tópico - a bandeira --project deve apontar para um arquivo tsconfig.json , não tslint.json .

@MartijnKooij houve algumas mudanças na implementação do recurso extends em tslint.json na v5.9 que deve ter feito inadvertidamente que sua configuração inválida parasse de funcionar. Como eu disse acima, você deve apontar --project para um arquivo tsconfig.json. Nenhum dos documentos do TSLint jamais afirmou que --project path/to/tslint.json é um padrão de uso compatível.

Todos 17 comentários

quando eu mudo tslint.json para

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

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

como posso obter o caminho de tslint-eslint-rules

Você está confundindo tslint.json e tsconfig.json

Tenho certeza de que não estou confuso. Na versão 5.8.1 , está correto.

O mesmo problema aqui.
Mudado

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

para

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

Consertar.

A path in an 'extends' option must be relative or rooted, but 'xxx' is not vem do compilador typescript se o seu tsconfig .json estiver errado. Portanto, ou você está usando -p tslint.json ou tem conteúdo que deveria estar em tslint.json adicionado ao seu tsconfig.json.

Outro usuário confuso aqui.
Estamos chamando tslint da CLI usando
"lint": "tslint --project tslint.json -e src/**/*.spec.*",

Isso funcionou muito bem no ano passado. Acabamos de atualizar para tslint 5.9.1 e estamos vendo o mesmo erro:

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

Nosso tslint.json tem as 2 extensões a seguir

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

Você poderia nos dar mais informações sobre o que mudou e como podemos consertar isso novamente?

Caso seja realmente relevante, nosso 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 quais são os argumentos CLI exatos que você está usando? Eu acho que você pode estar usando a mesma configuração inválida que os outros repórteres neste tópico - a bandeira --project deve apontar para um arquivo tsconfig.json , não tslint.json .

@MartijnKooij houve algumas mudanças na implementação do recurso extends em tslint.json na v5.9 que deve ter feito inadvertidamente que sua configuração inválida parasse de funcionar. Como eu disse acima, você deve apontar --project para um arquivo tsconfig.json. Nenhum dos documentos do TSLint jamais afirmou que --project path/to/tslint.json é um padrão de uso compatível.

Obrigado pela explicação extra, não entendi quando @ajafff disse que tínhamos o tslint em vez do tsconfig como nosso parâmetro --project.
Meu palpite é que em algum lugar existe uma postagem de blog sobre o uso de tslint que contém esse erro.
A documentação em https://palantir.github.io/tslint/usage/cli/ sobre isso está correta, pelo menos agora está;)

Obrigado novamente, e pela completude e outros. Nós mudamos:
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
nisso
"lint": "tslint --project tsconfig.json -e src/**/*.spec.*",

@ajafff @adidahiya Sinto muito, é minha culpa, muito obrigado!

mocha-tslint não está mais funcionando por causa desse problema também. E lá, configFilePath deve apontar para tslint.json. se eu usar tsconfig.json em vez disso:
const lint = require('mocha-tslint'); const configFilePath = './tsconfig.json'; lint(configFilePath);
eu obtenho este resultado:
tslint No valid rules have been specified

Estava sempre trabalhando com 5.8

@DaveXCS Isso é provavelmente causado por mocha-tslint fazendo algo errado. Eu acho que eles usam uma API privada (runner.ts) e usam o arquivo de configuração como argumento -c AND -p .

Tentei entender o problema no mocha-tslint, mas não vejo problema aqui:
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 O problema é esta linha: https://github.com/t-sauer/mocha-tslint/blob/0ba7f64be458cd74343a4149dff323d5bfd195a5/index.js#L24
Não deve passar o caminho para tslint.json para uma função que espera o caminho para um tsconfig.json

Abri um problema para você: https://github.com/t-sauer/mocha-tslint/issues/9

Obrigado pela ajuda.
substituí o --project no cli por tsconfig.json em vez de tslint.json e reescrevi "mocha-tslint" (incluindo também a verificação de tipo):
https://gist.github.com/DaveXCS/3bd930f7093b748f551c99e80d57c578

isso é assustadoramente mal documentado, apenas confuso e nada intuitivo.

@devguyrun os documentos de uso da --project para um arquivo tsconfig.json várias vezes. Se você acha que poderia ser mais claro, sinta-se à vontade para enviar um PR

erro TS18001: Um caminho em uma opção 'extends' deve ser relativo ou enraizado, mas '<% = sourcedir.split (' / '). map (x =>' .. '). join (' / ')%

/tsconfig.json 'não é.

Eu tenho algum outro erro.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

avanderhoorn picture avanderhoorn  ·  3Comentários

sumitkmr picture sumitkmr  ·  3Comentários

denkomanceski picture denkomanceski  ·  3Comentários

jacob-robertson picture jacob-robertson  ·  3Comentários

zewa666 picture zewa666  ·  3Comentários