vscode

【VSCode】Windowsでts(1149)エラーが出た時の対処法

更新日:2026/02/09

VSCodeでファイル名を小文字から大文字に変える、またはその反対を行うとts(1149)がエラーが表示されることがあります。
今回は、私が行った対処法をお伝えします。

 

結論

まずは結論から。

■結論1:

コマンドプロンプトで名前を変更して、もとに戻す。

rename MyFilename.jsx tmp.jsx
rename tmp.jsx MyFilename.jsx

めんどくさいわっ!

■結論2:

小文字に統一する。

 

エラー内容

ファイル名を小文字で統一していたが、少しわかりにくいと感じたのでアッパーキャメルケースに変更したら、ts(1149)がエラーが表示されました。

■エラー行:

import { MyFilename } from "./MyFilename";

■今回表示されたエラーの全文:

ファイル名 'c:/.../src/MyFilename.jsx' は、
既に含まれているファイル名 'c:/.../src/myfilename.jsx' と大文字と小文字の指定だけが異なります。
  ファイルがプログラム内に存在します。理由:
    コンパイル用に指定されたルート ファイル
    ファイル 'c:/.../src/main.jsx' から "./toast/MyFilename" を介してインポートされましたts(1149)

「MyFilename.jsxを参照しようとしているけど、すでにmyfilename.jsxというファイルを参照しているよ。」
という意味ですね。

これは、TypeScript Language Server(TSサーバー)がTypeScriptを介して出力しているエラー。
TypeScript使ってないよ!という場合でも、裏で動いてます。

 

Windowsは大文字と小文字を区別しないのが原因

Windowsは大文字と小文字を区別しません。

「いやいや、エクスプローラーなどで見ると、大文字と小文字が混ざって表示されているよ?」

だから、最近は大文字と小文字を区別しているのかも、という錯覚があったかも?

そこで、次のコードでファイルの存在確認を行ってみた。

import fs from "node:fs";

console.log( fs.existsSync("./src/myfilename .jsx") );
console.log( fs.existsSync("./src/Myfilename .jsx") );
console.log( fs.existsSync("./src/MyFilename .jsx") );

全て True でした!

TSサーバーがファイル名の確認をどのようにやっているのかわからないけれど、上記のように存在確認してたら大文字と小文字を区別できないですね。

でも、こんな初歩の問題はクリアできているはず。
問題解決後に再現しようとしたけど再現できなかったので、微妙なタイミングでハマってしまったパターンかもしれない。

 

TSサーバーを再起動

ネットで調べてみると、TSサーバーを再起動することで問題解決するようだ。

やってみた。

VScode: 表示 → コマンドパレット  → TSサーバーを再起動

エラーが消えた!と思ったら、少ししたら復活。
改善しませんでした。

念のためVSCodeを終了して再起動したら...
同じくエラーが消えた!と思ったら、少ししたら復活。
やっぱり、改善しませんでした。

 

ファイル名を変更して戻す

VSCode上でファイル名を変更して元に戻してみた。
改善しませんでした。

 

コマンドプロンプトでファイル名を変更して戻す

VSCodeを終了した後に、コマンドプロンプトを起動。

次のコマンドでファイル名を変更して元に戻す。

rename MyFilename.jsx tmp.jsx
rename tmp.jsx MyFilename.jsx

VSCodeを起動したら...

エラーが消えた!
少し待ってもエラーにならない!

改善しました。

同じエラーが他のファイルにも出ていたら、同じように対処するといいですね!

って、めんどくさいわっ!

 

大文字と小文字のチェックを無効にする

tsconfig.jsonまたはjsconfig.jsonで、compilerOptions.forceConsistentCasingInFileNamesをfalseにすると、大文字と小文字のチェックをおこないません。

  "compilerOptions": {
    "forceConsistentCasingInFileNames": false
  }

そのため、ts(1149)を回避できます。
でもおススメしません。

Windows環境ではimportのファイル名と実際のファイル名の大小文字が合っていなくてもビルドが通る可能性があります。
問題なのがそのようなパッケージをLinuxなどの大小文字を区別するOS上でビルドすると通らない点です。

大文字と小文字のチェックは必須ですね。

 

小文字に統一しよう

大文字と小文字の問題点は二つあります。

  1. ts(1149)が出る→対処が面倒
  2. importのファイル名と実際のファイル名の大小文字が合っていなくてもビルドが通る→他のOSでビルド失敗

フォルダ名を含めてファイル名は小文字で統一したほうがよさそうです。

更新日:2026/02/09

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。