Published on

cannot be compiled under '--isolatedModules'が出た時の対処方法

Authors
  • avatar
    Name
    ssu
    Twitter

typescriptで下記のようなエラーが出た時の対処方法を紹介します。

'example.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module.ts(1208)

対応としては、実は書かれている通りで、

Add an import, export, or an empty 'export {}' statement importするかexportするかexport {}してくれと書かれています。

そのため、ファイルの最後を下記のようにしたらエラーは出なくなります。

... ... export {}

これは、typescriptがファイルをimport/exportsがないとmoduleではなくてただのscriptだと捉えるからです。 そのため、importやexportを追加してあげる必要があります。そうすることで、moduleとして認識されて、typescriptのerrorが出なくなります。

またそもそも独立したモジュールかどうかをチェックしなくする方法もあります。 tsconfig.jsonisolatedModulesをfalseにすると、moduleかどうかの判定をしなくなるので、エラーは出なくなります。ただ、これだと本来チェックすべきものもある中でもれは出てくるので、個人的にはどうかなと思っています。

"compilerOptions": { "isolatedModules": false },

ただ、jestの時だけとかであれば、下記のようにしてい対応するのがいいかと思います。

"ts-jest": { "isolatedModules": false }

参考: Why is --isolatedModules error fixed by any import?