Tslint: Параметр компилятора extends требует значения строки типа

Созданный на 11 янв. 2018  ·  17Комментарии  ·  Источник: palantir/tslint

Сообщение об ошибке

  • __TSLint версия__: 5.9.1
  • __TypeScript version__: 2.6.2
  • __ Запуск TSLint через__: CLI

Линтинг кода TypeScript

// code snippet

с конфигурацией tslint.json :

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

Фактическое поведение

Ожидаемое поведение

Not A Bug

Самый полезный комментарий

@ StanLee12, какие именно аргументы интерфейса командной строки вы используете? Я думаю, вы могли использовать ту же неверную настройку, что и другие репортеры в этом потоке - флаг --project должен указывать на файл tsconfig.json , а не на tslint.json .

@MartijnKooij произошли некоторые изменения в реализации функции extends в tslint.json в v5.9, которые, должно быть, случайно привели к прекращению работы вашей недопустимой настройки. Как я сказал выше, вы должны указать --project на файл tsconfig.json. Ни один из документов TSLint никогда не утверждал, что --project path/to/tslint.json является поддерживаемым шаблоном использования.

Все 17 Комментарий

когда я меняю tslint.json на

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

это шоу A path in an 'extends' option must be relative or rooted, but 'tslint-eslint-rules' is not

как я могу получить путь tslint-eslint-rules

Вы путаете tslint.json и tsconfig.json

Я уверена, что не запуталась. В версии 5.8.1 это правильно.

Та же проблема и здесь.
Измененный

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

к

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

чинить.

A path in an 'extends' option must be relative or rooted, but 'xxx' is not поступает из компилятора машинописного текста, если ваш -p tslint.json либо у вас есть контент, который должен быть в tslint.json, добавленном в ваш tsconfig.json.

Еще один запутанный пользователь.
Мы вызываем tslint из интерфейса командной строки, используя
"lint": "tslint --project tslint.json -e src/**/*.spec.*",

Это отлично сработало в прошлом году. Только что мы обновились до tslint 5.9.1 и видим ту же ошибку:

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

Наш tslint.json имеет следующие 2 расширения

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

Не могли бы вы дать нам больше информации о том, что изменилось и как мы можем это исправить?

Если это действительно актуально, наш tsconfig выглядит так:

{
    "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 должен указывать на файл tsconfig.json , а не на tslint.json .

@MartijnKooij произошли некоторые изменения в реализации функции extends в tslint.json в v5.9, которые, должно быть, случайно привели к прекращению работы вашей недопустимой настройки. Как я сказал выше, вы должны указать --project на файл tsconfig.json. Ни один из документов TSLint никогда не утверждал, что --project path/to/tslint.json является поддерживаемым шаблоном использования.

Спасибо за дополнительное объяснение, я не понял, когда
Я предполагаю, что где-то там есть сообщение в блоге об использовании tslint, которое содержит эту ошибку.
Документация на https://palantir.github.io/tslint/usage/cli/ об этом верна, по крайней мере, теперь это так;)

Еще раз спасибо и за полноту и другим. Мы изменили:
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
в это
"lint": "tslint --project tsconfig.json -e src/**/*.spec.*",

@ajafff @adidahiya Мне очень жаль, это моя вина, большое спасибо!

mocha-tslint больше не работает из-за этой проблемы. И там configFilePath должен указывать на tslint.json. если вместо этого я использую tsconfig.json:
const lint = require('mocha-tslint'); const configFilePath = './tsconfig.json'; lint(configFilePath);
я получаю такой результат:
tslint No valid rules have been specified

Всегда работал с 5.8

@DaveXCS Это, скорее всего, вызвано неправильным действием mocha-tslint . Я предполагаю, что они используют частный API (runner.ts) и используют файл конфигурации как аргумент -c AND -p .

Я попытался разобраться в проблеме в mocha-tslint, но на самом деле не вижу здесь проблемы:
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 Проблема в этой строке: https://github.com/t-sauer/mocha-tslint/blob/0ba7f64be458cd74343a4149dff323d5bfd195a5/index.js#L24
Он не должен передавать путь к tslint.json функции, которая ожидает путь к tsconfig.json

Я открыл для вас вопрос: https://github.com/t-sauer/mocha-tslint/issues/9

Спасибо за вашу помощь.
Я заменил --project на cli на tsconfig.json вместо tslint.json и переписал «mocha-tslint» (включая проверку типов):
https://gist.github.com/DaveXCS/3bd930f7093b748f551c99e80d57c578

это ужасно плохо документировано, просто сбивает с толку и совсем не интуитивно понятно.

@devguyrun в документации по использованию интерфейса командной строки указано несколько раз указать --project на файл tsconfig.json . Если вы думаете, что это может быть более понятно, не стесняйтесь присылать PR

ошибка TS18001: путь в опции 'extends' должен быть относительным или корневым, но '<% = sourcedir.split (' / '). map (x =>' .. '). join (' / ')%

/tsconfig.json - нет.

У меня другая ошибка.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги