// code snippet
بتهيئة tslint.json
:
{
"defaultSeverity": "error",
"extends": [
"tslint-eslint-rules"
],
"jsRules": {},
"rules": {}
}
عندما أقوم بتغيير 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 ليست كذلك.
لدي خطأ آخر.
التعليق الأكثر فائدة
@ StanLee12 ما هي حجج CLI الدقيقة التي تستخدمها؟ أعتقد أنك ربما تستخدم نفس الإعداد غير الصحيح مثل المراسلين الآخرين في سلسلة الرسائل هذه - يجب أن تشير العلامة
--project
إلى ملفtsconfig.json
، وليسtslint.json
.MartijnKooij ، كانت هناك بعض التغييرات في تنفيذ ميزة
extends
في tslint.json في الإصدار 5.8 والتي يجب أن تكون قد تسببت عن غير قصد في توقف الإعداد غير الصحيح عن العمل. كما قلت أعلاه ، يجب أن تشير--project
إلى ملف tsconfig.json. لم يدعي أي من مستندات TSLint أن--project path/to/tslint.json
هو نمط استخدام مدعوم.