Tslint: コンパイラオプション 'extends'には文字列型の値が必要です

作成日 2018年01月11日  ·  17コメント  ·  ソース: palantir/tslint

バグレポート

  • __TSLintバージョン__:5.9.1
  • __TypeScriptバージョン__:2.6.2
  • __TSLintの実行__:CLI

リンティングされているTypeScriptコード

// code snippet

tslint.json構成の場合:

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

実際の動作

予想される行動

Not A Bug

最も参考になるコメント

@ StanLee12使用している正確なCLI引数は何ですか? このスレッドの他のレポーターと同じ無効な設定を使用している可能性があると思います。 --projectフラグは、 tslint.jsonではなくtsconfig.jsonファイルを指している必要があります。

@MartijnKooij v5.9のtslint.jsonextends機能の実装にいくつかの変更があり、誤って無効なセットアップが機能しなくなったに違いありません。 上で述べたように、 --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.jsontsconfig.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は、 tsconfig .jsonが間違っている場合、typescriptコンパイラから取得されます。 したがって、 -p tslint.json使用しているか、tslint.jsonにあるはずのコンテンツをtsconfig.jsonに追加しています。

ここに別の混乱したユーザー。
を使用してCLIからtslintを呼び出しています
"lint": "tslint --project tslint.json -e src/**/*.spec.*",

これは、過去1年間は問題なく機能しました。 ちょうど今、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使用している正確なCLI引数は何ですか? このスレッドの他のレポーターと同じ無効な設定を使用している可能性があると思います。 --projectフラグは、 tslint.jsonではなくtsconfig.jsonファイルを指している必要があります。

@MartijnKooij v5.9のtslint.jsonextends機能の実装にいくつかの変更があり、誤って無効なセットアップが機能しなくなったに違いありません。 上で述べたように、 --projectをtsconfig.jsonファイルにポイントする必要があります。 TSLintドキュメントのいずれも、 --project path/to/tslint.jsonがサポートされている使用パターンであると主張したことはありません。

@ajafffは、我々は--projectパラメータとして代わりのTSconfigのtslintを持っていたと述べたと、余分な説明のためのおかげで、私はそれを取得できませんでした。
私の推測では、どこかにこのエラーを含む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
それはへのパスを渡すべきではありませんtslint.jsonへのパス期待する関数にtsconfig.json

私はあなたのために問題を開きました: https

ご協力いただきありがとうございます。
cliの--projectをtslint.jsonではなくtsconfig.jsonに置き換え、「mocha-tslint」を書き直しました(型チェックも含む)。
https://gist.github.com/DaveXCS/3bd930f7093b748f551c99e80d57c578

これは驚くほど文書化が不十分で、混乱を招き、直感的ではありません。

@devguyrun CLIの使用法のドキュメントでは、 --projecttsconfig.jsonファイルを複数回指すように指示されています。 もっと明確にできると思われる場合は、PRを送信してください

エラーTS18001: 'extends'オプションのパスは相対的またはルート化されている必要がありますが、 '<%= sourcedir.split(' /')。map(x => '..')。join( '/')%

/tsconfig.json 'はそうではありません。

他のエラーが発生しました。

このページは役に立ちましたか?
0 / 5 - 0 評価