Tslint: Opsi kompiler 'memperpanjang' membutuhkan nilai tipe string

Dibuat pada 11 Jan 2018  ·  17Komentar  ·  Sumber: palantir/tslint

Laporan Bug

  • __TSLint versi__: 5.9.1
  • __TypeScript versi__: 2.6.2
  • __Menjalankan TSLint melalui__: CLI

Kode TypeScript sedang dilinting

// code snippet

dengan konfigurasi tslint.json :

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

Perilaku sebenarnya

Perilaku yang diharapkan

Not A Bug

Komentar yang paling membantu

@ StanLee12 apa argumen CLI persis yang Anda gunakan? Saya pikir Anda mungkin menggunakan pengaturan tidak valid yang sama dengan reporter lain di utas ini -- flag --project harus menunjuk ke file tsconfig.json , bukan tslint.json .

@MartijnKooij ada beberapa perubahan pada implementasi fitur extends di tslint.json di v5.9 yang pasti secara tidak sengaja menyebabkan pengaturan tidak valid Anda berhenti bekerja. Seperti yang saya katakan di atas, Anda harus mengarahkan --project ke file tsconfig.json. Tak satu pun dari dokumen TSLint pernah mengklaim bahwa --project path/to/tslint.json adalah pola penggunaan yang didukung.

Semua 17 komentar

ketika saya mengubah tslint.json menjadi

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

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

bagaimana saya bisa mendapatkan jalur tslint-eslint-rules

Anda membingungkan tslint.json dan tsconfig.json

Saya yakin saya tidak bingung. Dalam versi 5.8.1 , itu benar.

Masalah yang sama di sini.
Berubah

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

ke

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

memperbaiki.

A path in an 'extends' option must be relative or rooted, but 'xxx' is not berasal dari compiler TypeScript jika -p tslint.json atau Anda memiliki konten yang seharusnya ada di tslint.json yang ditambahkan ke tsconfig.json Anda.

Pengguna lain yang bingung di sini.
Kami memanggil tslint dari CLI menggunakan
"lint": "tslint --project tslint.json -e src/**/*.spec.*",

Ini telah bekerja dengan baik selama setahun terakhir. Baru saja kami memperbarui ke tslint 5.9.1 dan melihat kesalahan yang sama:

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

tslint.json memiliki 2 ekstensi berikut

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

Bisakah Anda memberi kami sedikit lebih banyak info tentang apa yang telah berubah dan bagaimana kami dapat memperbaikinya lagi?

Jika memang relevan, tsconfig kami terlihat seperti

{
    "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 apa argumen CLI persis yang Anda gunakan? Saya pikir Anda mungkin menggunakan pengaturan tidak valid yang sama dengan reporter lain di utas ini -- flag --project harus menunjuk ke file tsconfig.json , bukan tslint.json .

@MartijnKooij ada beberapa perubahan pada implementasi fitur extends di tslint.json di v5.9 yang pasti secara tidak sengaja menyebabkan pengaturan tidak valid Anda berhenti bekerja. Seperti yang saya katakan di atas, Anda harus mengarahkan --project ke file tsconfig.json. Tak satu pun dari dokumen TSLint pernah mengklaim bahwa --project path/to/tslint.json adalah pola penggunaan yang didukung.

Terima kasih atas penjelasan tambahannya, saya tidak mengerti ketika @ajafff mengatakan kami memiliki tslint alih-alih tsconfig sebagai parameter --project kami.
Dugaan saya adalah bahwa di suatu tempat di luar sana ada posting blog tentang penggunaan tslint yang berisi kesalahan ini.
Dokumentasi di https://palantir.github.io/tslint/usage/cli/ tentang ini benar, setidaknya sekarang ;)

Terima kasih lagi, dan untuk kelengkapan dan lain-lain. Kami mengubah:
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
ke dalam ini
"lint": "tslint --project tsconfig.json -e src/**/*.spec.*",

@ajafff @adidahiya Maafkan aku, ini salahku, terima kasih banyak!

mocha-tslint tidak lagi berfungsi karena masalah ini juga. Dan di sana configFilePath harus menunjuk ke tslint.json. jika saya menggunakan tsconfig.json sebagai gantinya:
const lint = require('mocha-tslint'); const configFilePath = './tsconfig.json'; lint(configFilePath);
saya mendapatkan hasil ini:
tslint No valid rules have been specified

Itu selalu bekerja dengan 5.8

@DaveXCS Itu kemungkinan besar disebabkan oleh mocha-tslint melakukan sesuatu yang salah. Saya kira mereka menggunakan API pribadi (runner.ts) dan menggunakan file konfigurasi sebagai argumen -c DAN -p .

Saya mencoba memahami masalah di mocha-tslint tetapi saya tidak benar-benar melihat masalah di sini:
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 Masalahnya adalah baris ini: https://github.com/t-sauer/mocha-tslint/blob/0ba7f64be458cd74343a4149dff323d5bfd195a5/index.js#L24
Seharusnya tidak meneruskan jalur ke tslint.json ke fungsi yang mengharapkan jalur ke tsconfig.json

Saya membuka masalah untuk Anda: https://github.com/t-sauer/mocha-tslint/issues/9

terima kasih atas bantuan Anda.
saya mengganti --project pada cli dengan tsconfig.json alih-alih tslint.json dan menulis ulang "mocha-tslint" (termasuk pengecekan tipe juga):
https://Gist.github.com/DaveXCS/3bd930f7093b748f551c99e80d57c578

ini sangat tidak terdokumentasi dengan baik, hanya membingungkan dan tidak intuitif sama sekali.

@devguyrun , dokumen penggunaan CLI memberi tahu Anda untuk mengarahkan --project ke file tsconfig.json beberapa kali. Jika Anda pikir itu bisa lebih jelas, jangan ragu untuk mengirim PR

kesalahan TS18001: Jalur dalam opsi 'memperluas' harus relatif atau berakar, tetapi '<%= sourcedir.split('/').map(x => '..').join('/') %

/tsconfig.json' tidak.

Saya mendapat beberapa kesalahan lain.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat