Tslint: يتطلب خيار المترجم "يمتد" قيمة من نوع السلسلة

تم إنشاؤها على ١١ يناير ٢٠١٨  ·  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 إلى ملف tsconfig.json ، وليس tslint.json .

MartijnKooij ، كانت هناك بعض التغييرات في تنفيذ ميزة extends في tslint.json في الإصدار 5.8 والتي يجب أن تكون قد تسببت عن غير قصد في توقف الإعداد غير الصحيح عن العمل. كما قلت أعلاه ، يجب أن تشير --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 من CLI باستخدام
"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 على الامتدادين التاليين

{
    "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 إلى ملف tsconfig.json ، وليس tslint.json .

MartijnKooij ، كانت هناك بعض التغييرات في تنفيذ ميزة extends في tslint.json في الإصدار 5.8 والتي يجب أن تكون قد تسببت عن غير قصد في توقف الإعداد غير الصحيح عن العمل. كما قلت أعلاه ، يجب أن تشير --project إلى ملف tsconfig.json. لم يدعي أي من مستندات TSLint أن --project path/to/tslint.json هو نمط استخدام مدعوم.

شكرًا على الشرح الإضافي ، لم أحصل عليه عندما قال ajafff أن لدينا tslint بدلاً من tsconfig كمعامل مشروعنا.
أعتقد أنه يوجد في مكان ما هناك منشور مدونة حول استخدام tslint يحتوي على هذا الخطأ.
الوثائق الموجودة على https://palantir.github.io/tslint/usage/cli/ حول هذا صحيحة ، على الأقل الآن ؛)

شكرا مرة اخرى وعلى الاكتمال وغيرها. لقد تغيرنا:
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
في هذا
"lint": "tslint --project tsconfig.json -e src/**/*.spec.*",

ajafffadidahiya وأنا آسف لذلك، هو خطأي، وذلك بفضل الكثير!

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 بشيء خاطئ. أعتقد أنهم يستخدمون واجهة برمجة تطبيقات خاصة (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 تخبرك مستندات استخدام CLI بالتوجيه --project إلى ملف tsconfig.json عدة مرات. إذا كنت تعتقد أنه يمكن أن يكون أكثر وضوحًا ، فلا تتردد في إرسال PR

خطأ TS18001: يجب أن يكون المسار في خيار "الامتداد" نسبيًا أو متجذرًا ، ولكن "<٪ = sourcedir.split ('/'). map (x => '..'). انضم ('/')٪

/tsconfig.json ليست كذلك.

لدي خطأ آخر.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات