tsconfig.jsonでfile not foundエラーが発生する場合の対処

2021.11.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、CX事業本部 IoT事業部の若槻です。

今回は、tsconfig.jsonでfile not foundエラーが発生する場合の対処方法を確認してみました。

さきに結論

not foundエラーとなっているファイルを一瞬そのパスに配置すれば、エラーが解消する場合があります。

環境

  • VS Code: 1.61.1
  • TypeScript: 3.9.10

事象

AWS CDK(TypeScript)アプリケーション環境で、tsconfig.jsonファイルがFile '(中略)/aws-cdk-app/sampleHandler.test.ts' not found.というエラーとなりました。 image

エラーが発生し始めたのは、sampleHandler.test.tsというファイルをアプリのルートパスからtest/配下に移動させた後からです。

下記はエラーとなったtsconfig.jsonです。

tsconfig.json

{
  "compilerOptions": {
    "target": "ES2018",
    "module": "commonjs",
    "lib": [
      "es2018"
    ],
    "declaration": true,
    "strict": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "noImplicitThis": true,
    "alwaysStrict": true,
    "noUnusedLocals": false,
    "noUnusedParameters": false,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": false,
    "inlineSourceMap": true,
    "inlineSources": true,
    "experimentalDecorators": true,
    "strictPropertyInitialization": false,
    "typeRoots": [
      "./node_modules/@types"
    ]
  },
  "exclude": [
    "node_modules",
    "cdk.out"
  ]
}

実装への直接の影響は出てはいませんが、ファイルがずっとエラー状態となっているの視界にチラつくのは精神衛生上よろしくないので何とかしたいですね。

原因

そもそもtsconfig.jsonファイルは、TypeScriptアプリケーションにてtsファイルのコンパイルオプションや対象ファイルを定義するコンフィグファイルです。

よって原因としては、コンパイル対象となるtsファイル(拡張子tsのファイル)を作業中に移動や削除をした際に、何らかの理由でTypeScriptアプリケーションがコンパイル対象のファイルの変更を追跡できなかったためエラーになったことによるものと思われます。

対処

対処方法その1

エラーが発生しているファイルの変更を追跡できるように再度同じ変更を行ってあげることにより解消できる場合があります。

今回であれば、not foundエラーとなっているsampleHandler.test.tsという名称のファイルを空でもコピーでも良いので/aws-cdk-app/配下に配置するとエラーが消えました。そしてそのファイルを削除した後もエラーは出なくなりました。

対処方法その2

VS Codeを再起動することによっても解決する場合があります。

しかしVS Code再起動によりターミナルでの認証や変数の格納、コマンド実行履歴が飛んでしまうので、なるべくやりたくはないですね。

Issueは上がっている

今回の事象はTypeScriptのリポジトリにIssueとして2021/4にオープンされており、同様のケースが多数上がっていますが、未解決のようです。

おわりに

tsconfig.jsonでfile not foundエラーが発生する場合の対処方法を確認してみました。

TypeScriptでの開発でたまにこのエラーがしばらく出続けた後いつのまにか消えるということがありやきもきすることがあったので、VS Code再起動以外のかんたんな対処方法が確認できてよかったです。

参考

以上