Typescript: File berbeda dari file yang sudah disertakan hanya dalam casing: benar casing tetapi jalur relatif

Dibuat pada 5 Jul 2018  ·  44Komentar  ·  Sumber: 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.

Saya telah memeriksa casing tiga kali dalam referensi kami dan file yang sebenarnya memiliki casing yang benar juga. Sejauh yang saya tahu, ini semata-mata karena jalur relatif menggunakan casing yang salah, atau mungkin hanya karena jalur relatif itu sendiri?

Ini mengkompilasi dengan baik di Mac dan Linux, tetapi melempar kesalahan ini pada Windows.

Bug Fix Available

Komentar yang paling membantu

Saya menemukan kesalahan yang sama persis baru-baru ini.
Setelah melakukan beberapa googling saya menemukan ini . Balasan terakhir menarik perhatian saya. Jadi saya cukup menutup folder yang sedang bekerja di Visual Studio Code dan membukanya kembali. Setelah semuanya dimuat, tidak ada kesalahan dan saya tidak perlu mengacaukan file tsconfig.json.

semoga ini membantu

Semua 44 komentar

Ini terlihat seperti bug, tetapi kami memerlukan cara untuk mereproduksinya. Apakah Anda memiliki file zip atau repo atau deskripsi file yang dapat kami gunakan?

Ternyata, masalahnya ada pada modul pihak ketiga, tsify. Proyek kami menggunakan 1.0.1, dan forceConsistentCasingInFileNames tidak didukung hingga 4.0.0.

Saya memiliki masalah yang sama dengan salah satu impor komponen saya. Nama direktori komponen saya historis dengan huruf "h" yang sama. Saya mencoba mengimpornya dengan huruf besar "H". Harus "
impor {GraphDataComponent} dari "./historical/graph-data/graph-data.component"; "alih-alih" import {GraphDataComponent} dari "./Historical/graph-data/graph-data.component" di app.moudule. ts.

Terima kasih @aaybhangu!

Hai, Saya masih menghadapi masalah ini dengan - kesalahan TS1149: Nama file 'src / models / headers / userRole.ts' berbeda dari nama file yang sudah disertakan 'src / model / headers / UserRole.ts' hanya dalam casing.
Saya telah mencoba berbagai cara untuk memperbaikinya, tetapi tidak berhasil. Saya menggunakan windows.

Saya juga menghadapi masalah yang sama.
Untuk saat ini, "diselesaikan" dengan menyetel:
"forceConsistentCasingInFileNames": false,
di tsconfig.json

Saya menemukan kesalahan yang sama persis baru-baru ini.
Setelah melakukan beberapa googling saya menemukan ini . Balasan terakhir menarik perhatian saya. Jadi saya cukup menutup folder yang sedang bekerja di Visual Studio Code dan membukanya kembali. Setelah semuanya dimuat, tidak ada kesalahan dan saya tidak perlu mengacaukan file tsconfig.json.

semoga ini membantu

Saya menemukan masalah yang sama ini

  • menghapus ruang kerja tidak membantu
  • mengubah forceConsistentCasingInFileNames tidak membantu

Untuk kasus saya, di suatu tempat di direktori, kesalahan terjadi, diubah ...? Jadi saya harus melakukan hal berikut untuk memperbaiki semuanya.

  1. Anda mengubah nama direktori menjadi sesuatu seperti "OriginalDirectoryName" => "AnotherName"
  2. VsCode akan mencoba memperbarui nama direktori di sumbernya, jadi tunggu beberapa detik, dan itu akan menunjukkan semua file yang perlu diperbarui dengan nama direktori baru.
  3. Pergi File -> Save Semua dan simpan semuanya
  4. Ubah nama direktori kembali "AnotherName" => "OriginalDirectoryName"
  5. Sekali lagi, ini akan mencoba memperbarui file, jadi Anda menyimpan semuanya.
  6. Mulai ulang VsCode.

maka itu harus memperbaiki masalah.

Saya mendapatkan bug ini setelah mengganti nama file dari camelCase menjadi huruf besar semua huruf pertama

Dalam kasus saya, saya biasa membuat file bernama Logger tetapi kemudian berubah menjadi logger . Satu file yang diimpor ini selalu menampilkan pesan kesalahan ini tetapi sebenarnya di terminal atau file lain, tidak akan menampilkan pesan ini.

Jadi saya menggunakan fitur VSCode Reload Window untuk memuat ulang VSCode, dan pesan kesalahan menghilang. Jadi saya pikir mungkin ada cache di suatu tempat di VSCode untuk kesalahan ini dan tidak jelas? Anda dapat mencoba jika Anda menghadapi masalah ini setelah memastikan nama file sudah benar.

Saya memiliki masalah yang sama, dan baru saja menemukan bahwa untuk beberapa alasan, di beberapa file ts disebut menggunakan huruf kapital, kemudian saya menamainya menjadi huruf kecil dan berfungsi.

Anda juga dapat mencoba menghapus file model ts ini dan membuat lagi dengan angular-CLI.

Mengubah kasus menghasilkan pengecualian pada perintah updateOpen. Perhatikan bagaimana file dibuka dengan case yang berbeda dan ditutup dengan casing asli dengan perintah yang sama.

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)

Masalah ini tampaknya lebih terlibat daripada hanya memeriksa nama file root. Saat menggunakan kembali program, ada kasus uji lain yang gagal yaitu uji penggunaan ulang program sederhana:

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.
        });

Ya, saya mengalami masalah yang sama dan tidak ada perbaikan / solusi yang disebutkan sebelumnya yang dapat membantu.

Dalam kasus saya, pesannya adalah:

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.

@Tokopedia

Ilustrator

dan

ilustrator

Saya sangat menyadari pesan kesalahan dan apa yang dilihat transpiler. Apa yang saya _don't_ mengerti adalah di mana ia mendapatkan versi huruf kecil illustrator . Saya telah melakukan beberapa pencarian dan sama sekali tidak menemukan illustrator (bila tidak digunakan dalam komentar atau string atau apa pun) semuanya menggunakan huruf kecil. Satu contoh di mana saya referensi bahwa index.d.ts file dalam bahwa Illustrator folder, kata dikapitalisasi dengan baik, seperti nama direktori.

Saya memiliki masalah serupa, tetapi saya tidak dapat mereproduksinya lagi. Sepertinya bug VSCode: file dengan nama huruf besar ditampilkan sebagai nama huruf kecil dalam beberapa kasus, termasuk menu kendali sumber.

Saya perhatikan bahwa, terkadang, seseorang mungkin mengubah nama folder dari 'foo' menjadi 'Foo' dan ketika Anda melakukan git pull itu juga tidak memperbarui nama folder, atau seseorang lupa untuk mendorong perubahan . Dalam hal ini semua referensi kode Anda benar, tidak ada yang salah dalam kode Anda, dan sering kali file dalam folder itu dapat ditemukan dengan baik; itu hanya akan membuat TS panik.

Jadi temukan folder yang menjadi akar masalahnya. Ubah nama folder. Dan lakukan itu dengan benar:

git mv foo tmp
git mv tmp Foo

Diikuti oleh commit dan push akan menjadi cara termudah untuk mengganti nama direktori dalam git repo.

Git memiliki pengaturan konfigurasi yang memberitahukan apakah akan case sensitive atau tidak: core.ignorecase . Untuk memberi tahu Git agar peka huruf besar / kecil, cukup setel pengaturan ini ke false

Lihat lebih lanjut:

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

apa yang dilakukannya untuk saya adalah membatalkan semua penggantian nama, mematikan server, mengganti nama semua file yang ingin saya ganti namanya dan memulai ulang server. Pasti ada masalah penyimpanan cache.

Memuat ulang jendela di VSCode memperbaiki masalah. Saya mengubah komponen React menjadi camelCase dan menemukan masalah tersebut. Tampaknya ada semacam masalah cache di VSCode.

Saya baru saja menemukan ini; componentA.tsx diimpor ../store/someStore tetapi impor ini menghasilkan kesalahan ini, menyarankan nama file adalah SomeStore.ts (meskipun sistem file dan VSCode menunjukkan someStore.ts di lokasi itu .

Nama file '/mypath/store/someStore.ts' berbeda dari nama file yang sudah disertakan '/mypath/store/SomeStore.ts' hanya dalam casing. _ts (1149) _

Ternyata beberapa file lain ( ../store/index.ts ) memiliki impor yang salah ( ./SomeStore ) tetapi _not_ menimbulkan kesalahan. Setelah memperbaiki impor itu dan memulai ulang VSCode, componentA.tsx tidak lagi memunculkan kesalahan ini.

Mengembalikan perbaikan ke index.ts dan memulai ulang VSCode menghasilkan kesalahan palsu pada componentA.tsx lagi.

Satu hal yang saya lakukan untuk membantu situasi saya adalah berhenti menggunakan WSL. Saya kembali ke pengaturan kustom asli saya yang memanfaatkan Cygwin dan saya belum mengalami masalah ini sejak saat itu.

Saya juga menghadapi masalah yang sama.
Untuk saat ini, "diselesaikan" dengan menyetel:
"forceConsistentCasingInFileNames": false,
di tsconfig.json

Terima kasih, ini membantu

Setelah melakukan beberapa googling saya menemukan ini . Balasan terakhir menarik perhatian saya. Jadi saya cukup menutup folder yang sedang bekerja di Visual Studio Code dan membukanya kembali. Setelah semuanya dimuat, tidak ada kesalahan dan saya tidak perlu mengacaukan file tsconfig.json.

Ini benar-benar berhasil

Saya dapat mereproduksi ini dengan menetapkan nama file dan kemudian mengganti namanya menjadi yang lain. Tampaknya tidak diperbarui dalam pemetaan sumber dengan benar. Saya menghapus file masalah dan menambahkannya lagi. Sakit, ya, tapi berhasil.

Saya mengalami masalah, saya memperbaikinya dengan menyetel "forceConsistentCasingInFileNames": false
di tsconfig.json lalu ke true lagi.

Saya memperbaikinya hanya reboot VSCode.

Saya memiliki masalah serupa di WebStorm setelah mengubah nama file, saya cukup yakin itu beberapa cache IDE.

Jika membersihkan cache / reboot IDE tidak membantu, hapus folder, kloning repo lagi dan lakukan instalasi bersih.

Saya telah menemukan ini di Mac:

Skenario

  • file bernama ComponentA.ts
  • componentB.ts memiliki import ComponentA from './ComponentA';
  • componentC.ts juga memiliki import ComponentA from './ComponentA';
  • ubah nama file ComponentA.ts menjadi componentA.ts
  • perbarui componentC.ts menjadi import ComponentA from './componentA;'
  • lupa perbarui impor untuk componentB.ts sehingga masih memiliki kapital lama import ComponentA from './ComponentA;'

Kesalahan (kira-kira):

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

Alasan:

Kasus ketidakpekaan di Mac adalah menyelesaikan impor sisa import ComponentA from './ComponentA;' di componentB.ts terlebih dahulu, kemudian 'menyimpan / mendaftarkan' jalur impor ini.

Kemudian impor yang benar di componentC.ts mengalami kesalahan meskipun itu benar.

Cara Memperbaiki:

  • temukan semua impor componentA.ts / ComponentA.ts
  • periksa sensitivitas huruf dan benar.

Dalam kasus saya, file kesalahan componentC.ts sebenarnya benar dan saya harus memperbaiki componentB.ts , meskipun pesan tersebut menunjukkan masalah dengan componentC.ts .

Saya harus mengganti nama file saya dan gulp build. Kemudian, saya mengganti nama kembali ke nama asli yang lama dan itu dibangun dengan baik.

Karena cache aneh yang tidak mencakup kasus perubahan nama file vue dan karena itu mengeluh kepada Vetur, saya harus memuat ulang VS Code ( Ctrl + Shirt + P -> Reload Window) seperti yang disarankan @uniquexiaobai .

Restart dari Typecript-Server sudah cukup. Restart VSCode berlebihan.

Di VSC di OSX: CMD + Shift + P diikuti dengan mengetik TypeScript: Restart TS server .

Dengan webstorm Anda perlu membatalkan dan menghapus cache:
file> Cache tidak valid / restart

Solusi terpendek dan terbaik yang saya temukan adalah.

Hapus saja kata itu dari yang menyebabkan masalah casing.
misalnya
ListsDrawerOfContent dan ListsDrawerofContent

Saya menghapus dari dari nama file. Dan penyusun menyusunnya dengan benar.

Kemudian saya mengganti namanya dengan kasus yang saya inginkan ListsDrawerOfContent .
Bekerja seperti pesona.

Juga, ingatlah gitnya.

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

Saya memiliki masalah yang sama dengan impor, setelah mengganti nama file dari "a" menjadi "A", saya baru saja memulai ulang kode vs dan kemudian berfungsi.

Saya memiliki masalah yang sama. VSCode memulai ulang dan menyetel "forceConsistentCasingInFileNames": false tidak dapat membantu saya.

info kesalahan: (hanya berbeda dalam simbol disk)
Nama file 'D: /mycode/devmono2/packages/server-sdk/index.ts' berbeda dari nama file yang sudah disertakan 'd: /mycode/devmono2/packages/server-sdk/index.ts' hanya dalam casing.Vetur ( 1149)

Mengapa?

Terpecahkan!
Masalah saya adalah masalah sederhana.

Semuanya baik-baik saja secara lokal di mac, tetapi saya mendapatkan kesalahan ini di server Jenkins saya. Masalahnya hanyalah bahwa secara lokal nama file adalah 'quote.ts' tetapi dalam repo git jarak jauh saya adalah 'Quote.ts'.

Bagaimana masalah itu muncul
Jadi nama file awalnya 'Quote.ts' yang saya dorong. Saya kemudian mengubah menjadi 'quote.ts', tetapi git tidak melihat ini sebagai perubahan (saya percaya Mac tidak peka huruf besar / kecil) - dan oleh karena itu perubahan huruf tidak tercermin dalam repo jarak jauh.

Jadi, saat pipeline Jenkins berjalan, pipeline tersebut menarik 'Quote.ts' saat dirujuk sebagai '../../quote.ts' - yang menghasilkan error.

Bagaimana saya menyelesaikannya

  1. Minum kopi
  2. Ubah nama file di remote repo secara manual menjadi huruf kecil
  3. git pull secara lokal
  4. Jalankan pipa

Boom Bam! Semoga ini bisa membantu seseorang

Memiliki masalah serupa yang menghasilkan sekitar 100 kesalahan ini.

Tidak membaca semuanya dengan cermat karena mereka semua tampaknya memiliki akar masalah yang sama. Baru-baru ini beralih ke menjalankan node di WSL2 yang saya anggap remeh adalah penyebab masalah. Setelah 2 jam tanpa hasil, saya benar-benar memeriksa seluruh daftar dan menemukan satu contoh di mana ada bug yang sebenarnya.

impor {FooInterface} dari '../Foo'; // harus '../foo'
impor {BarService} dari '../Bar'; // harus '../bar'

Saya mengubahnya menjadi huruf kecil, memuat ulang vscode, membuatnya kembali dan semua kesalahan hilang.

Apa yang saya pikirkan, happend adalah bahwa ts mencoba mengimpor jalur yang salah ('Foo' bukan 'foo') dan kemudian menyimpan hasilnya dan mencoba menggunakan jalur cache yang salah saat memproses sisa kode.

Semoga ini membantu seseorang di luar sana!

saya baru saja memulai ulang ide saya kemudian kesalahan hilang

buat saja objek yang sama di komponen, dan mulai ng, setelah berhasil berjalan, lalu hapus objek dan impor tautan Anda,
maka itu harus berhasil,
Dalam proyek saya itu berhasil.

ini baru saja terjadi pada saya, ini adalah masalah berkelanjutan yang belum terselesaikan. Itu terjadi setiap kali saya mengubah casing nama direktori dan mencoba melakukan perubahan. Git tidak mengenali perubahan kapitalisasi untuk nama direktori.

+1 ...... tapi KENAPAYYYYYYY

Saya baru saja menghadapi masalah. Ternyata ketika saya mencoba mengimpornya menggunakan vscode, VSCode menggunakan nama file dan nama direktori sebelumnya. Jadi saya memodifikasinya dan setelah menjalankan tsc itu tidak menunjukkan kesalahan apa pun di terminal, tetapi saya masih mendapatkan garis berlekuk-lekuk yang dibaca di VSCode. Jadi saya me-restart server Typecript di vscode ( Typescript: Restart TS Server ) dan itu hilang. Semoga bisa membantu seseorang.

@ninjavang Anda membantu saya! Apakah masalah yang sama terjadi dengan pipeline gitlab ci / cd saya. Ternyata ketika saya pergi ke cabang jarak jauh dan memeriksa jalur file, ada dua versi file, masing-masing dalam versi case sensitive.

Saya menghapus versi yang tidak diinginkan pada remote, menyalin file secara lokal, menarik remote ke bawah, menyegarkan Kode VS saya, dan menambahkan kembali file tersebut. Berhasil!

Terima kasih untuk bantuannya!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

DanielRosenwasser picture DanielRosenwasser  ·  3Komentar

Antony-Jones picture Antony-Jones  ·  3Komentar

uber5001 picture uber5001  ·  3Komentar

bgrieder picture bgrieder  ·  3Komentar

MartynasZilinskas picture MartynasZilinskas  ·  3Komentar