How to Fix TS1149: File name differs from already included file name only in casing

TS1149: File name differs from already included file name only in casing error occurs in TypeScript when “importing or referencing two files in your project that differ only in their letter casing.” This can be problematic, especially on case-insensitive file systems (like the ones on macOS and Windows), because the system treats them as the same file, while TypeScript treats them as different.

To fix the “File name differs from already included file name only in casing” error in TypeScript, ensure that the “forceConsistentCasingInFileNames” option is set to “true” in your tsconfig.json file. This helps enforce consistent casing for file names in your project and avoid similar issues in the future.

{
  "compilerOptions": {
    "forceConsistentCasingInFileNames": true,
    ...
  },
  ...
}

TypeScript error “File name differs from already included file name only in casing” occurs when you have two or more files with the same name but different letter casing imported or included in your project. This can cause issues, especially on case-sensitive file systems, leading to unexpected behavior.

When you try to import a file with the same name as another, the names only differ in capitalization. For example, if you have a file named “data.ts” and try importing a file named “Data.ts”, you will get this error.

Other helpful solutions

  1. Identify the conflicting files: The error message should point out the file paths of the conflicting files. Carefully review the file paths to find the files that differ only in the casing.
  2. Rename the files: Choose a consistent naming convention for your project and rename the conflicting files accordingly. For example, if you have two files named MyComponent.tsx and myComponent.tsx, decide which naming convention you want to use, and rename one of the files to match the other.
  3. Update imports and references: After renaming the files, you must update all imports and references to those files in your project. Ensure to use updated, consistent file names.
  4. Verify tsconfig.json settings: Ensure that your tsconfig.json file has the correct settings for file resolution. Check the baseUrl and paths options to ensure they’re set up correctly for your project structure.
  5. Enable Case-sensitive Filesystem (Advanced): If you’re on macOS, you could consider using a case-sensitive file system. This, however, is a more involved process and could cause other unforeseen issues, especially with some software that expects a case-insensitive file system.
  6. Using the “as” keyword tells TypeScript that you want to import the file named “foo.ts” even though it is capitalized differently from the file you are importing it into.
    import { Data } as Data from "data.ts";

I hope these fixes will help you.