Typescript: يختلف الملف عن الملف المضمن بالفعل في الغلاف فقط: الغلاف الصحيح ولكن المسار النسبي

تم إنشاؤها على ٥ يوليو ٢٠١٨  ·  44تعليقات  ·  مصدر: microsoft/TypeScript

Error TS1149: File name 'C:/Project/frontend/scripts/State.ts' differs from already included file name '../frontend/scripts/State.ts' only in casing.

لقد قمت بفحص الغلاف ثلاث مرات في مراجعنا والملفات الفعلية لها الغلاف الصحيح أيضًا. بقدر ما أستطيع أن أقول ، هذا فقط لأن المسار النسبي يستخدم غلافًا غير صحيح ، أو ربما بسبب المسار النسبي نفسه؟

يتم تجميعه بشكل جيد على نظامي التشغيل Mac و Linux ، ولكنه يلقي هذا الخطأ على Windows.

Bug Fix Available

التعليق الأكثر فائدة

لقد عثرت على نفس الخطأ مؤخرًا.
بعد القيام ببعض البحث في googling وجدت هذا . الرد الأخير لفت انتباهي. لذلك قمت ببساطة بإغلاق المجلد الذي كان يعمل فيه في Visual Studio Code وأعدت فتحه. بعد تحميل كل شيء ، لا توجد أخطاء ولم يكن علي العبث بملف tsconfig.json.

أتمنى أن يساعدك هذا

ال 44 كومينتر

يبدو هذا وكأنه خطأ ، لكننا سنحتاج إلى طريقة ما لإعادة إنتاجه. هل لديك ملف مضغوط أو ريبو أو وصف للملفات التي يمكننا استخدامها؟

كما اتضح ، كانت المشكلة مع وحدة طرف ثالث ، tsify. كان مشروعنا يستخدم 1.0.1 ، ولم يتم دعم forceConsistentCasingInFileNames حتى 4.0.0.

لدي نفس المشكلة مع أحد استيراد المكون الخاص بي. كان اسم دليل المكون تاريخيًا بنفس الحرف "h" الذي كنت أحاول استيراده باستخدام حرف "H" الكبير. يجب أن يكون "
استيراد {GraphDataComponent} من "./historical/graph-data/graph-data.component" ؛ "بدلاً من" استيراد {GraphDataComponent} من "./Historical/graph-data/graph-data.component" في app.moudule. ts.

aaybhangu شكرا!

مرحبًا ، ما زلت أواجه هذه المشكلة مع - الخطأ TS1149: اسم الملف 'src / Models / headers / userRole.ts' يختلف عن اسم الملف المضمن بالفعل 'src / Models / headers / UserRole.ts' فقط في الغلاف.
لقد جربت طرقًا متعددة لإصلاحها ، لكن لم يحالفني الحظ. أنا أستخدم النوافذ.

انا ايضا اواجه نفس المشكلة.
في الوقت الحالي ، "تم حلها" عن طريق تحديد:
"forceConsistentCasingInFileNames": false,
في tsconfig.json

لقد عثرت على نفس الخطأ مؤخرًا.
بعد القيام ببعض البحث في googling وجدت هذا . الرد الأخير لفت انتباهي. لذلك قمت ببساطة بإغلاق المجلد الذي كان يعمل فيه في Visual Studio Code وأعدت فتحه. بعد تحميل كل شيء ، لا توجد أخطاء ولم يكن علي العبث بملف tsconfig.json.

أتمنى أن يساعدك هذا

جئت عبر هذه المشكلة نفسها

  • إزالة مساحة العمل لم يساعد
  • تغيير forceConsistentCasingInFileNames لم يساعد

بالنسبة لحالتي ، في مكان ما في الدليل ، كانت الأخطاء تحدث ، تم تغييرها ...؟ لذلك كان علي القيام بما يلي لإصلاحها جميعًا.

  1. قمت بتغيير اسم الدليل إلى اسم مثل "OriginalDirectoryName" => "AnotherName"
  2. سيحاول VsCode تحديث اسم الدليل في المصدر ، لذا انتظر بضع ثوانٍ ، وسيُظهر جميع الملفات التي تحتاج إلى تحديث باسم الدليل الجديد.
  3. اذهب File -> Save الكل واحفظهم جميعًا
  4. تغيير اسم الدليل مرة أخرى "AnotherName" => "OriginalDirectoryName"
  5. مرة أخرى ، سيحاول تحديث الملفات ، حتى تقوم بحفظها جميعًا.
  6. إعادة تشغيل VsCode.

ثم يجب أن يحل المشكلة.

أتلقى هذا الخطأ بعد إعادة تسمية ملف من camelCase إلى أحرف كبيرة جميع الأحرف الأولى

في حالتي ، كنت أقوم بإنشاء ملف باسم Logger ولكن تم تغييره إلى logger لاحقًا. يعرض أحد الملفات التي استوردت هذا دائمًا رسالة الخطأ هذه ولكن في الواقع في الجهاز أو في ملفات أخرى ، لن تظهر هذه الرسالة.

لذلك أستخدم ميزة VSCode Reload Window لإعادة تحميل VSCode ، وتختفي رسالة الخطأ. لذا أعتقد أنه ربما توجد ذاكرة تخزين مؤقت في مكان ما في VSCode لهذا الخطأ ولم يتم مسحها؟ يمكنك تجربة إذا واجهت هذه المشكلة بعد التأكد من صحة اسم الملف.

لدي نفس المشكلة ، واكتشفت للتو أنه لسبب ما ، في بعض ملفات ts يطلق عليه استخدام حرف كبير ، ثم قمت بإعادة تسميته بأحرف صغيرة وهو يعمل.

يمكنك أيضًا محاولة إزالة ملف ts النموذجي هذا وإنشاء مرة أخرى باستخدام angular-CLI.

يؤدي تغيير الحالة إلى استثناء في أمر updateOpen. لاحظ كيف يتم فتح الملف بحالة مختلفة وإغلاقه بالغلاف الأصلي بنفس الأمر.

Info 69   [10:30:18.128] request:
    {"seq":5,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":["c:/temp/est/Logger.ts"],"openFiles":[{"file":"c:/temp/est/logger.ts","fileContent":"export class logger {\r\n    \r\n}","scriptKindName":"TS","projectRootPath":"c:\\temp\\est"}]}}
Err 70    [10:30:18.153] Exception on executing command {"seq":5,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":["c:/temp/est/Logger.ts"],"openFiles":[{"file":"c:/temp/est/logger.ts","fileContent":"export class logger {\r\n    \r\n}","scriptKindName":"TS","projectRootPath":"c:\\temp\\est"}]}}:

    Debug Failure. False expression: Script should not exist and not be open already

    Error: Debug Failure. False expression: Script should not exist and not be open already
        at ProjectService.applyChangesInOpenFiles (c:\Typescript\built\local\tsserver.js:138090:34)
        at Session.handlers.ts.createMapFromTemplate._a.(anonymous function) (c:\Typescript\built\local\tsserver.js:138972:46)
        at c:\Typescript\built\local\tsserver.js:140630:88
        at IOSession.Session.executeWithRequestId (c:\Typescript\built\local\tsserver.js:140621:28)
        at IOSession.Session.executeCommand (c:\Typescript\built\local\tsserver.js:140630:33)
        at IOSession.Session.onMessage (c:\Typescript\built\local\tsserver.js:140653:35)
        at Interface.<anonymous> (c:\Typescript\built\local\tsserver.js:141968:27)
        at Interface.emit (events.js:182:13)
        at Interface._onLine (readline.js:290:10)
        at Interface._normalWrite (readline.js:433:12)
        at Socket.ondata (readline.js:149:10)
        at Socket.emit (events.js:182:13)
        at addChunk (_stream_readable.js:283:12)
        at readableAddChunk (_stream_readable.js:264:11)
        at Socket.Readable.push (_stream_readable.js:219:10)
        at Pipe.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)

يبدو أن هذه المشكلة معنية أكثر من مجرد التحقق من أسماء الملفات الجذرية. عند إعادة استخدام البرنامج ، هناك حالة اختبار أخرى فشلت وهي اختبار بسيط لإعادة استخدام البرنامج:

it("forceConsistentCasingInFileNames works when renaming file with different casing", () => {
            const loggerFile: File = {
                path: `${projectRoot}/logger.ts`,
                content: `export class logger { }`
            };
            const anotherFile: File = {
                path: `${projectRoot}/another.ts`,
                content: `import { logger } from "./logger"; new logger();`
            };
            const tsconfig: File = {
                path: `${projectRoot}/tsconfig.json`,
                content: JSON.stringify({
                    compilerOptions: { forceConsistentCasingInFileNames: true }
                })
            };

            const host = createWatchedSystem([loggerFile, anotherFile, tsconfig, libFile, tsconfig]);
            createWatchOfConfigFile(tsconfig.path, host);
            checkOutputErrorsInitial(host, emptyArray);
            host.writeFile(anotherFile.path, anotherFile.content.replace("./logger", "./Logger"));
            host.runQueuedTimeoutCallbacks();
            checkOutputErrorsIncremental(host, [
                createCompilerDiagnostic(Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, loggerFile.path, `${projectRoot}/Logger.ts`),
            ]); // Currently the errors are not reported in watch mode but will be reported if program is created from scratch.
        });

نعم ، لدي هذه المشكلة نفسها ولا تفعل أي من الإصلاحات / الحلول المذكورة سابقًا أي شيء للمساعدة.

في حالتي ، الرسالة هي:

error TS1149: File name '/mnt/c/Users/<username>/Documents/adobe-scripts/InDesign/Create Downloadable 
(2020a)/Illustrator/2015.3/index.d.ts' differs from already included file name '/mnt/c/Users/<username>/Documents/adobe-scripts/InDesign/Create Downloadable (2020a)/illustrator/2015.3/index.d.ts' only in casing.

تضمين التغريدة

المصور

و

المصور

أعي جيدًا رسالة الخطأ وما يراه المترجم. ما لا أفهمه هو المكان الذي تحصل فيه على نسخة صغيرة من illustrator . لقد أجريت العديد من عمليات البحث ولم أجد أي مثيل على illustrator (عندما لا يتم استخدامها في تعليق أو سلسلة أو أي شيء) كلها أحرف صغيرة. المثال الوحيد الذي أشير فيه إلى هذا الملف index.d.ts في هذا المجلد Illustrator ، الكلمة مكتوبة بأحرف كبيرة بشكل صحيح ، تمامًا مثل اسم الدليل.

كانت لدي مشكلة مماثلة ، لكن لا يمكنني إعادة إنتاجها بعد الآن. يبدو أنه خطأ VSCode: يتم عرض ملف ذي اسم كبير كاسم صغير في بعض الحالات ، بما في ذلك قائمة التحكم في المصدر.

لقد لاحظت أنه في بعض الأحيان ، قد يقوم شخص ما بتغيير اسم المجلد من "foo" إلى "Foo" وعندما تقوم بإجراء git pull ، فإما أنه لا يقوم بتحديث اسم المجلد ، أو أن شخصًا ما نسي دفع التغيير . في هذه الحالة ، تكون جميع مراجع التعليمات البرمجية صحيحة ، ولا يوجد شيء خاطئ في التعليمات البرمجية ، وغالبًا ما يمكن العثور على الملفات الموجودة في هذا المجلد على ما يرام ؛ ستجعل TS يفزع.

لذا ابحث عن المجلد الذي يمثل السبب الجذري. قم بتغيير اسم المجلد. والتزم بما يلي بشكل صحيح:

git mv foo tmp
git mv tmp Foo

تليها commit و push ستكون أبسط طريقة لإعادة تسمية دليل في git repo.

يحتوي Git على إعداد تكوين يخبره ما إذا كان حساسًا لحالة الأحرف أو غير حساس: core.ignorecase . لإخبار Git بأن يكون حساسًا لحالة الأحرف ، ما عليك سوى تعيين هذا الإعداد على false

شاهد المزيد:

https://stackoverflow.com/questions/17683458/how-do-i-commit-case-sensitive-only-filename-changes-in-git/17688308#17688308

ما فعلته بالنسبة لي هو التراجع عن جميع عمليات إعادة التسمية ، وإغلاق الخادم ، وإعادة تسمية جميع الملفات التي أريد إعادة تسميتها وإعادة تشغيل الخادم. يجب أن يكون نوعًا من مشكلة التخزين المؤقت.

إعادة تحميل نافذة في VSCode إصلاح المشكلة. لقد غيرت مكون React إلى camelCase وواجهت المشكلة. يبدو أنه نوع من مشكلة التخزين المؤقت في VSCode.

لقد صادفت هذا للتو ؛ لقد استوردت componentA.tsx ../store/someStore ولكن هذا الاستيراد نتج عنه هذا الخطأ ، مما يشير إلى أن اسم الملف كان SomeStore.ts (على الرغم من أن نظام الملفات و VSCode يعرضان someStore.ts في ذلك الموقع .

اسم الملف "/mypath/store/someStore.ts" يختلف عن اسم الملف المضمن بالفعل "/mypath/store/SomeStore.ts" فقط في الغلاف. _ts (1149) _

تبين أن ملفًا آخر ( ../store/index.ts ) يحتوي على استيراد غير صحيح ( ./SomeStore ) ولكن لم _ لم يرفع أي خطأ. بعد إصلاح هذا الاستيراد وإعادة تشغيل VSCode ، لم يعد componentA.tsx يثير هذا الخطأ.

تؤدي إعادة الإصلاح إلى index.ts وإعادة تشغيل VSCode إلى حدوث خطأ زائف على componentA.tsx مرة أخرى.

كان أحد الأشياء التي فعلتها لمساعدة وضعي هو التوقف عن استخدام WSL. عدت إلى الإعداد المخصص الأصلي الخاص بي والذي يعزز Cygwin ولم أواجه هذه المشكلة منذ ذلك الحين.

انا ايضا اواجه نفس المشكلة.
في الوقت الحالي ، "تم حلها" عن طريق تحديد:
"forceConsistentCasingInFileNames": false,
في tsconfig.json

شكرا ، إنها تساعد

بعد القيام ببعض البحث في googling وجدت هذا . الرد الأخير لفت انتباهي. لذلك قمت ببساطة بإغلاق المجلد الذي كان يعمل فيه في Visual Studio Code وأعدت فتحه. بعد تحميل كل شيء ، لا توجد أخطاء ولم يكن علي العبث بملف tsconfig.json.

هذا حقا يعمل

تمكنت من إعادة إنتاج هذا عن طريق تعيين اسم لملف ثم إعادة تسميته إلى اسم آخر. لا يبدو أنه يتم التحديث في تعيين المصدر بشكل صحيح. لقد حذفت ملف المشكلة وأضفته مرة أخرى. ألم ، نعم ، لكنه نجح.

واجهت المشكلة ، وقمت بإصلاحها من خلال ضبط "forceConsistentCasingInFileNames": false
في tsconfig.json ثم إلى true مرة أخرى.

أنا أصلحه فقط إعادة تشغيل VSCode.

لدي مشكلة مماثلة في WebStorm بعد تغيير أسماء الملفات ، وأنا متأكد تمامًا من أنها ذاكرة تخزين مؤقت لـ IDE.

إذا لم يساعد مسح ذاكرة التخزين المؤقت / إعادة تشغيل IDE ، فقم بإزالة المجلد واستنساخ الريبو مرة أخرى وقم بالتثبيت النظيف.

لقد وجدت هذا على جهاز Mac:

سيناريو

  • ملف يسمى ComponentA.ts
  • يحتوي componentB.ts على import ComponentA from './ComponentA';
  • يحتوي componentC.ts أيضًا على import ComponentA from './ComponentA';
  • قم بتغيير اسم ملف ComponentA.ts إلى componentA.ts
  • تحديث componentC.ts إلى import ComponentA from './componentA;'
  • ننسى تحديث الاستيراد لـ componentB.ts بحيث لا يزال يحتوي على الرمز القديم import ComponentA from './ComponentA;'

خطأ (تقريبًا):

 File name '/componentA.ts' differs from already included file name  '/ComponentA.ts'  only in casing. ts(1149)

السبب:

يؤدي عدم حساسية حالة الأحرف على نظام التشغيل Mac إلى حل عملية الاستيراد المتبقية import ComponentA from './ComponentA;' في componentB.ts أولاً ، ثم "التخزين المؤقت / التسجيل" لمسار الاستيراد هذا.

ثم هناك خطأ في الاستيراد الصحيح في componentC.ts بالرغم من صحته.

كيفية العلاج:

  • البحث عن كافة الواردات من componentA.ts / ComponentA.ts
  • تحقق من حساسية الحالة وصحيحها.

في حالتي ، كان ملف الخطأ المكون C.ts صحيحًا بالفعل واضطررت إلى إصلاح componentB.ts ، على الرغم من أن الرسالة كانت تشير إلى مشكلة في componentC.ts .

اضطررت إلى إعادة تسمية ملفي وبناء gulp. بعد ذلك ، أعدت تسمية الاسم الأصلي القديم وبنى بشكل جيد.

بسبب ذاكرة التخزين المؤقت الغريبة التي لا تغطي حالة تغيير اسم ملف vue وبالتالي تقديم شكوى لـ Vetur ، اضطررت إلى إعادة تحميل VS Code ( Ctrl + Shirt + P -> إعادة تحميل النافذة) كما نصح @ uniquexiaobai .

ستكون إعادة تشغيل Typescript-Server كافية. إعادة تشغيل VSCode هو مبالغة.

في VSC على OSX: CMD + Shift + P متبوعًا بكتابة TypeScript: Restart TS server .

باستخدام Webstorm ، تحتاج إلى إلغاء إلغاء ذاكرة التخزين المؤقت ومسحها:
ملف> إبطال ذاكرة التخزين المؤقت / إعادة التشغيل

أقصر وأفضل حل وجدته هو.

فقط قم بإزالة تلك الكلمة من تلك التي تسبب مشاكل في الغلاف.
على سبيل المثال
ListsDrawerOfContent و ListsDrawerofContent

أزلت من اسم الملف. وجمعها المترجمون بشكل صحيح.

ثم لاحقًا ، قمت بإعادة تسمية الحالة المطلوبة ListsDrawerOfContent .
عملت مثل السحر.

أيضًا ، ضع في اعتبارك git.

https://stackoverflow.com/questions/17683458/how-do-i-commit-case-sensitive-only-filename-changes-in-git

واجهت نفس المشكلة مع الاستيراد ، بعد إعادة تسمية ملف من "أ" إلى "أ" ، أعدت تشغيل رمز vs ثم يعمل.

كان لي نفس المشكلة. إعادة تشغيل VSCode وضبط "forceConsistentCasingInFileNames": خطأ لا يمكن أن يساعدني.

معلومات الخطأ: (تختلف فقط في رمز القرص)
اسم الملف 'D: /mycode/devmono2/packages/server-sdk/index.ts' يختلف عن اسم الملف المضمن بالفعل 'd: /mycode/devmono2/packages/server-sdk/index.ts' فقط في casing.Vetur ( 1149)

لماذا ا؟

تم حلها!
كانت مشكلتي بسيطة.

كان كل شيء على ما يرام محليًا على نظام Mac ، لكنني تلقيت هذا الخطأ على خادم Jenkins الخاص بي. تكمن المشكلة ببساطة في أن اسم الملف محليًا كان "quote.ts" ولكن في مستودع git البعيد الخاص بي كان "Quote.ts".

كيف جاءت المشكلة
لذلك كان اسم الملف في الأصل "Quote.ts" الذي رفعته لأعلى. ثم قمت بالتغيير إلى "quote.ts" ، لكن git لم ترى هذا على أنه تغيير (أعتقد أن أجهزة Mac غير حساسة لحالة الأحرف) - وبالتالي لم ينعكس تغيير الحالة في الريبو البعيد.

وهكذا عندما تم تشغيل خط أنابيب Jenkins ، كان يسحب "Quote.ts" عندما تمت الإشارة إليه كـ "../../quote.ts" - مما أدى إلى حدوث الخطأ.

كيف حللت ذلك

  1. اشرب قهوه
  2. قم بتغيير اسم الملف في الريبو البعيد يدويًا إلى أحرف صغيرة
  3. بوابة سحب محليا
  4. تشغيل خط الأنابيب

بوم بام! أمل أن هذا يساعد شخصاما

واجهت مشكلة مماثلة تسببت في حوالي 100 من هذه الأخطاء.

لم أقرأهم جميعًا عن كثب حيث يبدو أنهم جميعًا لديهم نفس المشكلة الجذرية. لقد تحولت مؤخرًا إلى عقدة تشغيل في WSL2 التي أخذتها كأمر مسلم به كان سبب المشكلة. بعد ساعتين دون نجاح ، قمت بالفعل بالاطلاع على القائمة بأكملها ووجدت مثالًا واحدًا حيث كان هناك خطأ فعلي.

استيراد {FooInterface} من "../Foo" ؛ // يجب أن يكون "../foo"
استيراد {BarService} من "../Bar" ؛ // يجب أن يكون "../bar"

لقد غيرتها إلى أحرف صغيرة ، وأعدت تحميل vscode ، وأعدت بنائها وذهبت جميع الأخطاء.

ما أعتقد أنه حدث هو أن ts حاولت استيراد المسار غير الصحيح ('Foo' بدلاً من 'foo') ثم تخزين النتيجة مؤقتًا وحاول استخدام المسار غير الصحيح المخبأ عند معالجة بقية الكود.

نأمل أن يساعد هذا شخص ما هناك!

أنا فقط أعد تشغيل بيئة تطوير متكاملة ثم ذهب الخطأ

فقط قم بإنشاء نفس الكائن في المكون ، وابدأ ng ، بعد التشغيل بنجاح ، ثم قم بإزالة الكائن واستيراد الرابط الخاص بك ،
ثم يجب أن يكون العمل ،
عملت في مشروعي.

لقد حدث هذا لي للتو ، إنها مشكلة مستمرة لم يتم حلها. يحدث ذلك عندما أقوم بتغيير غلاف اسم الدليل ومحاولة تنفيذ التغيير. لا يتعرف Git على التغيير في غلاف اسم الدليل.

+1 ...... لكن لماذا

لقد واجهت المشكلة للتو. اتضح أنه عندما حاولت استيراده باستخدام vscode ، استخدم VSCode اسم الملف السابق واسم الدليل. لذلك قمت بتعديله وبعد تشغيل tsc لم يظهر أي خطأ في الجهاز ، لكنني كنت لا أزال أتلقى سطر القراءة المتعرج في VSCode. لذلك أعدت تشغيل خادم Typescript في vscode ( Typescript: Restart TS Server ) واختفى. أتمنى أن يساعد شخص ما.

ninjavang لقد ساعدتني! واجهت نفس المشكلة مع خط أنابيب gitlab ci / cd الخاص بي. تبين عندما ذهبت إلى الفرع البعيد وتحققت من مسار الملف ، كان هناك نسختان من الملف ، كل منهما في نسخته الحساسة للحالة.

قمت بحذف الإصدار غير المرغوب فيه على جهاز التحكم عن بُعد ، وقمت بنسخ الملف محليًا ، وسحبت جهاز التحكم عن بُعد ، وقمت بتحديث رمز VS الخاص بي ، وأعدت إضافة الملف. انها عملت!

شكرا للمساعدة!

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