Typescript: Datei unterscheidet sich von bereits enthaltenen Dateien nur im Gehäuse: korrektes Gehäuse, aber relativer Pfad

Erstellt am 5. Juli 2018  ·  44Kommentare  ·  Quelle: 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.

Ich habe das Gehäuse in unseren Referenzen dreimal überprüft und die tatsächlichen Dateien haben auch das richtige Gehäuse. Soweit ich das beurteilen kann, liegt dies nur daran, dass der relative Pfad ein falsches Gehäuse verwendet, oder vielleicht nur am relativen Pfad selbst?

Es kompiliert problemlos unter Mac und Linux, löst diesen Fehler jedoch unter Windows aus.

Bug Fix Available

Hilfreichster Kommentar

Ich bin kürzlich auf genau diesen Fehler gestoßen.
Nachdem ich ein bisschen gegoogelt hatte, fand ich das . Die letzte Antwort fiel mir auf. Also habe ich einfach den Ordner geschlossen, in dem in Visual Studio Code gearbeitet wurde, und ihn erneut geöffnet. Nachdem alles geladen war, gab es keine Fehler und ich musste mich nicht mit der Datei tsconfig.json anlegen.

hoffe das hilft

Alle 44 Kommentare

Das sieht nach einem Fehler aus, aber wir brauchen eine Möglichkeit, ihn zu reproduzieren. Haben Sie eine Zip-Datei oder ein Repo oder eine Beschreibung der Dateien, die wir verwenden könnten?

Wie sich herausstellte, lag das Problem bei einem Drittanbieter-Modul, tsify. Unser Projekt verwendete 1.0.1 und forceConsistentCasingInFileNames wurde erst in 4.0.0 unterstützt.

Ich hatte das gleiche Problem mit einem meiner Komponentenimporte. Der Name des Komponentenverzeichnisses war historisch mit demselben "h", das ich mit dem Großbuchstaben "H" importieren wollte. Es sollte sein "
{GraphDataComponent} aus "./historical/graph-data/graph-data.component" importieren; "anstelle von" {GraphDataComponent} aus "./Historical/graph-data/graph-data.component" in app.moudule importieren. ts.

Danke @aaybhangu!

Hallo, ich bin immer noch mit diesem Problem konfrontiert - Fehler TS1149: Der Dateiname 'src / models / headers / userRole.ts' unterscheidet sich vom bereits enthaltenen Dateinamen 'src / models / headers / UserRole.ts' nur im Gehäuse.
Ich habe mehrere Möglichkeiten ausprobiert, um das Problem zu beheben, aber kein Glück. Ich benutze Windows.

Ich stehe auch vor dem gleichen Problem.
Vorerst "gelöst" durch Einstellung:
"forceConsistentCasingInFileNames": false,
in tsconfig.json

Ich bin kürzlich auf genau diesen Fehler gestoßen.
Nachdem ich ein bisschen gegoogelt hatte, fand ich das . Die letzte Antwort fiel mir auf. Also habe ich einfach den Ordner geschlossen, in dem in Visual Studio Code gearbeitet wurde, und ihn erneut geöffnet. Nachdem alles geladen war, gab es keine Fehler und ich musste mich nicht mit der Datei tsconfig.json anlegen.

hoffe das hilft

Ich bin auf dasselbe Problem gestoßen

  • Das Entfernen des Arbeitsbereichs hat nicht geholfen
  • Das Ändern von forceConsistentCasingInFileNames hat nicht geholfen

Für meinen Fall, irgendwo im Verzeichnis, sind die Fehler aufgetreten, wurden geändert ...? Also musste ich Folgendes tun, um sie alle zu reparieren.

  1. Sie ändern den Verzeichnisnamen in "OriginalDirectoryName" => "AnotherName"
  2. VsCode versucht, den Verzeichnisnamen in der Quelle zu aktualisieren. Warten Sie daher einige Sekunden, und es werden alle Dateien angezeigt, die mit dem neuen Verzeichnisnamen aktualisiert werden müssen.
  3. Gehen Sie zu File -> Save All und speichern Sie sie alle
  4. Ändern Sie den Verzeichnisnamen zurück "AnotherName" => "OriginalDirectoryName"
  5. Wieder wird versucht, Dateien zu aktualisieren, sodass Sie sie alle speichern.
  6. Starten Sie VsCode neu.

dann sollte es das Problem beheben.

Ich erhalte diesen Fehler, nachdem ich eine Datei aus dem camelCase umbenannt habe, um alle Anfangsbuchstaben in Großbuchstaben zu schreiben

In meinem Fall habe ich eine Datei mit dem Namen Logger , später jedoch in logger geändert. Eine Datei, die dies importiert hat, zeigt immer diese Fehlermeldung an, aber tatsächlich im Terminal oder in anderen Dateien wird diese Meldung nicht angezeigt.

Ich verwende also die VSCode Reload Window -Funktion, um den VSCode neu zu laden, und die Fehlermeldung verschwindet. Ich denke also, dass es irgendwo in VSCode einen Cache für diesen Fehler gibt und nicht gelöscht wurde? Sie können es versuchen, wenn Sie auf dieses Problem stoßen, nachdem Sie sichergestellt haben, dass der Dateiname korrekt ist.

Ich habe das gleiche Problem und habe gerade festgestellt, dass es aus irgendeinem Grund in einer ts-Datei mit einem Großbuchstaben aufgerufen wird. Dann habe ich es in Kleinbuchstaben umbenannt und es funktioniert.

Sie können auch versuchen, diese ts-Datei des Modells zu entfernen und erneut mit angle-CLI zu erstellen.

Das Ändern der Groß- und Kleinschreibung führt zu einer Ausnahme beim Befehl updateOpen. Beachten Sie, wie die Datei in verschiedenen Groß- und Kleinschreibung geöffnet und mit dem Originalgehäuse in demselben Befehl geschlossen wird.

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)

Dieses Problem scheint mehr zu sein als nur das Überprüfen der Stammdateinamen. Bei der Wiederverwendung eines Programms schlägt ein weiterer Testfall fehl, nämlich der einfache Programmwiederverwendungstest:

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

Ja, ich habe das gleiche Problem und keine der zuvor genannten Korrekturen / Problemumgehungen hilft.

In meinem Fall lautet die Nachricht:

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.

@SturmB

Illustrator

und

Illustrator

Ich kenne die Fehlermeldung und das, was der Transpiler sieht. Was ich nicht verstehe ist, wo es die Kleinbuchstabenversion von illustrator bekommt. Ich habe mehrere Suchen durchgeführt und kann absolut keine Instanz finden, in der das Wort illustrator (wenn es nicht in einem Kommentar oder einer Zeichenfolge oder was auch immer verwendet wird) nur in Kleinbuchstaben geschrieben ist. In der einen Instanz, in der ich auf diese index.d.ts -Datei in diesem Illustrator -Ordner verweise, wird das Wort genau wie der Verzeichnisname richtig großgeschrieben.

Ich hatte ein ähnliches Problem, kann es aber nicht mehr reproduzieren. Es scheint ein VSCode-Fehler zu sein: In einigen Fällen wird eine Datei mit einem Großbuchstaben als Kleinbuchstaben angezeigt, einschließlich des Quellcodeverwaltungsmenüs.

Ich habe festgestellt, dass manchmal jemand den Namen eines Ordners von 'foo' in 'Foo' ändert und wenn Sie ein git pull ausführen, wird entweder der Ordnername nicht aktualisiert oder jemand hat vergessen, die Änderung zu verschieben . In diesem Fall sind alle Ihre Code-Referenzen korrekt, nichts in Ihrem Code ist falsch, und oft sind die Dateien in diesem Ordner in Ordnung. es wird TS nur ausflippen lassen.

Suchen Sie also den Ordner, der die Hauptursache ist. Ändern Sie den Namen des Ordners. Und begehen Sie das richtig:

git mv foo tmp
git mv tmp Foo

Gefolgt von commit und push wäre der einfachste Weg, ein Verzeichnis in einem Git-Repo umzubenennen.

Git verfügt über eine Konfigurationseinstellung, die angibt, ob zwischen Groß- und Kleinschreibung unterschieden werden soll: core.ignorecase . Setzen Sie diese Einstellung einfach auf false um Git mitzuteilen, dass die Groß- und Kleinschreibung beachtet wird

Mehr sehen:

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

Was es für mich getan hat, ist, alle Umbenennungen rückgängig zu machen, den Server herunterzufahren, alle Dateien umzubenennen, die ich umbenennen und den Server neu starten möchte. Muss eine Art Caching-Problem sein.

Das Neuladen des Fensters in VSCode hat das Problem behoben. Ich habe eine React-Komponente in camelCase geändert und bin auf das Problem gestoßen. Es scheint eine Art Caching-Problem in VSCode zu sein.

Ich bin gerade darauf gestoßen; Mein componentA.tsx importierte ../store/someStore aber dieser Import führte zu diesem Fehler, was darauf hindeutete, dass der Dateiname SomeStore.ts (obwohl das Dateisystem und VSCode an dieser Stelle someStore.ts anzeigen .

Der Dateiname '/mypath/store/someStore.ts' unterscheidet sich vom bereits enthaltenen Dateinamen '/mypath/store/SomeStore.ts' nur im Gehäuse. _ts (1149) _

Es stellte sich heraus, dass eine andere Datei ( ../store/index.ts ) einen falschen Import hatte ( ./SomeStore ), aber _nicht_ einen Fehler auslöste. Nach dem Beheben dieses Imports und dem Neustart von VSCode löst componentA.tsx diesen Fehler nicht mehr aus.

Das Zurücksetzen des Fixes auf index.ts und das Neustarten von VSCode führt erneut zu einem falschen Fehler bei componentA.tsx .

Eine Sache, die ich getan habe, um meine Situation zu verbessern, war, die Verwendung von WSL einzustellen. Ich bin zu meinem ursprünglichen benutzerdefinierten Setup zurückgekehrt, das Cygwin nutzt, und habe dieses Problem seitdem nicht mehr gehabt.

Ich stehe auch vor dem gleichen Problem.
Vorerst "gelöst" durch Einstellung:
"forceConsistentCasingInFileNames": false,
in tsconfig.json

Danke, es hilft

Nachdem ich ein bisschen gegoogelt hatte, fand ich das . Die letzte Antwort fiel mir auf. Also habe ich einfach den Ordner geschlossen, in dem in Visual Studio Code gearbeitet wurde, und ihn erneut geöffnet. Nachdem alles geladen war, gab es keine Fehler und ich musste mich nicht mit der Datei tsconfig.json anlegen.

Das hat wirklich funktioniert

Ich konnte dies reproduzieren, indem ich einen Namen für eine Datei festlegte und sie dann in eine andere umbenannte. Es scheint in der Quellzuordnung nicht richtig aktualisiert zu werden. Ich habe die Problemdatei gelöscht und erneut hinzugefügt. Ein Schmerz, ja, aber es hat funktioniert.

Ich hatte das Problem, ich habe es behoben, indem ich "forceConsistentCasingInFileNames" gesetzt habe: false
in tsconfig.json dann wieder auf true.

Ich behebe es nur Neustart VSCode.

Ich habe ein ähnliches Problem in WebStorm, nachdem ich die Dateinamen geändert habe. Ich bin mir ziemlich sicher, dass es sich um einen IDE-Cache handelt.

Wenn das Löschen des Cache / das Neustarten der IDE nicht hilft, entfernen Sie den Ordner, klonen Sie das Repo erneut und führen Sie eine Neuinstallation durch.

Ich habe dies auf einem Mac gefunden:

Szenario

  • Datei mit dem Namen ComponentA.ts
  • componentB.ts hat import ComponentA from './ComponentA';
  • componentC.ts hat auch import ComponentA from './ComponentA';
  • Ändern Sie den Dateinamen ComponentA.ts in componentA.ts
  • Aktualisieren Sie componentC.ts auf import ComponentA from './componentA;'
  • Vergessen Sie, den Import für componentB.ts zu aktualisieren, damit das alte Großbuchstaben import ComponentA from './ComponentA;'

Fehler (grob):

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

Grund:

Bei Mac wird die Groß- und Kleinschreibung nicht berücksichtigt, indem der verbleibende Import import ComponentA from './ComponentA;' in componentB.ts aufgelöst und dann dieser Importpfad zwischengespeichert / registriert wird.

Dann ist der korrekte Import in componentC.ts fehlerhaft, obwohl er korrekt ist.

Wie man Abhilfe schafft:

  • Finden Sie alle Importe von componentA.ts / ComponentA.ts
  • Groß- und Kleinschreibung prüfen und korrigieren.

In meinem Fall war die fehlerhafte Datei componentC.ts tatsächlich korrekt und ich musste componentB.ts reparieren, obwohl die Nachricht auf ein Problem mit componentC.ts hinwies.

Ich musste meine Datei umbenennen und schlucken. Dann habe ich wieder in den alten ursprünglichen Namen umbenannt und es hat gut gebaut.

Wegen des seltsamen Caches, der den Fall der Änderung des Namens der vue -Datei und der damit verbundenen Beschwerde von Vetur nicht abdeckt, musste ich VS-Code ( Ctrl + Shirt + P -> Fenster neu laden ) neu @uniquexiaobai empfohlen.

Ein Neustart des Typescript-Servers reicht aus. VSCode-Neustart ist übertrieben.

In VSC unter OSX: CMD + Shift + P gefolgt von der Eingabe von TypeScript: Restart TS server .

Mit Webstorm müssen Sie den Cache ungültig machen und leeren:
Datei> Caches ungültig machen / neu starten

Die kürzeste und beste Lösung, die ich gefunden habe, ist.

Entfernen Sie einfach dieses Wort aus dem Wort, das Gehäuseprobleme verursacht.
z.B
ListsDrawerOfContent und ListsDrawerofContent

Ich habe aus dem Dateinamen entfernt. Und die Compiler haben es richtig kompiliert.

Dann später benannte ich durch meinen gewünschten Fall ListsDrawerOfContent .
Lief wie am Schnürchen.

Denken Sie auch an den Idioten.

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

Ich hatte das gleiche Problem mit dem Import. Nachdem ich eine Datei von "a" in "A" umbenannt hatte, startete ich einfach den vs-Code neu und dann funktioniert es.

Ich hatte das gleiche Problem. VSCode-Neustart und Einstellung von "forceConsistentCasingInFileNames": false kann mir nicht helfen.

Fehlerinfo: (unterscheiden sich nur im Diskettensymbol)
Der Dateiname 'D: /mycode/devmono2/packages/server-sdk/index.ts' unterscheidet sich vom bereits enthaltenen Dateinamen 'd: /mycode/devmono2/packages/server-sdk/index.ts' nur in casing.Vetur ( 1149)

Warum?

Gelöst!
Meins war ein einfaches Problem.

Auf dem Mac war lokal alles in Ordnung, aber ich habe diesen Fehler auf meinem Jenkins-Server erhalten. Das Problem war einfach, dass der Dateiname lokal 'quote.ts' war, aber in meinem Remote-Git-Repo war es 'Quote.ts'.

Wie das Problem entstanden ist
Der Dateiname war also ursprünglich 'Quote.ts', den ich hochgeschoben habe. Ich habe dann zu 'quote.ts' gewechselt, aber git hat dies nicht als Änderung angesehen (ich glaube, bei Macs wird die Groß- und Kleinschreibung nicht berücksichtigt) - und daher wurde die Änderung der Groß- und Kleinschreibung nicht im Remote-Repo berücksichtigt.

Als die Jenkins-Pipeline lief, wurde 'Quote.ts' heruntergezogen, als auf '../../quote.ts' verwiesen wurde - was zu dem Fehler führte.

Wie ich es gelöst habe

  1. Kaffee trinken
  2. Ändern Sie den Dateinamen im Remote-Repo manuell in Kleinbuchstaben
  3. Git ziehen lokal
  4. Führen Sie die Pipeline aus

Boom Bam! Hoffe das hilft jemandem

Hatte ein ähnliches Problem, das rund 100 dieser Fehler verursachte.

Ich habe sie nicht alle zu genau gelesen, da sie alle das gleiche Grundproblem zu haben schienen. Hatte kürzlich zu einem laufenden Knoten in WSL2 gewechselt, den ich für selbstverständlich hielt, war die Ursache des Problems. Nach 2 Stunden ohne Erfolg ging ich tatsächlich die gesamte Liste durch und fand ein Beispiel, bei dem es einen tatsächlichen Fehler gab.

{FooInterface} aus '../Foo' importieren; // sollte '../foo' sein
{BarService} aus '../Bar' importieren; // sollte '../bar' sein

Ich habe es in Kleinbuchstaben geändert, vscode neu geladen, es neu erstellt und alle Fehler sind verschwunden.

Ich denke, es ist passiert, dass es versucht hat, den falschen Pfad zu importieren ('Foo' anstelle von 'foo') und dann das Ergebnis zwischengespeichert hat und versucht hat, den falschen zwischengespeicherten Pfad zu verwenden, wenn der Rest des Codes verarbeitet wird.

Hoffentlich hilft das jemandem da draußen!

Ich starte einfach meine Idee neu, dann ist der Fehler weg

Erstellen Sie einfach ein und dasselbe Objekt in der Komponente und starten Sie ng, nachdem es erfolgreich ausgeführt wurde. Entfernen Sie dann das Objekt und importieren Sie Ihren Link.
dann sollte es Arbeit sein,
In meinem Projekt hat es funktioniert.

Das ist mir gerade passiert, es ist ein fortlaufendes Problem, das nicht gelöst wurde. Es passiert immer dann, wenn ich das Gehäuse eines Verzeichnisnamens ändere und versuche, die Änderung zu übernehmen. Git erkennt keine Änderung im Gehäuse für einen Verzeichnisnamen.

+1 ...... aber WARUMJJJJJJ

Ich habe mich gerade dem Problem gestellt. Es stellte sich heraus, dass VSCode beim Versuch, es mit vscode zu importieren, den vorherigen Dateinamen und Verzeichnisnamen verwendete. Also habe ich es geändert und nach dem Ausführen von tsc kein Fehler im Terminal angezeigt, aber ich habe immer noch diese verschnörkelte Zeile in VSCode erhalten. Also habe ich den Typescript-Server in vscode neu gestartet ( Typescript: Restart TS Server ) und er ist verschwunden. Hoffe es hilft jemandem.

@ninjavang du hast mir geholfen! Hatte das gleiche Problem mit meiner gitlab ci / cd Pipeline. Es stellte sich heraus, dass ich, als ich zum Remote-Zweig ging und den Pfad der Datei überprüfte, zwei Versionen der Datei hatte, jede in ihrer Groß- und Kleinschreibung.

Ich habe die unerwünschte Version auf der Fernbedienung gelöscht, die Datei lokal kopiert, die Fernbedienung heruntergezogen, meinen VS-Code aktualisiert und die Datei erneut hinzugefügt. Es funktionierte!

Danke für die Hilfe!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen