TypeScript Jest モジュール変換エラー解決
TypeScriptでJestがモジュールを変換できないエラーの解決方法
エラーメッセージ
SyntaxError: Cannot use import statement outside a module
このエラーは、JestがTypeScriptのモジュールを正しく変換できないことを示しています。通常、これはモジュールシステムの設定やバベルの設定に問題があることが原因です。
解決方法
-
モジュールシステムの確認
tsconfig.json
ファイルのmodule
オプションが適切に設定されていることを確認してください。一般的な値はcommonjs
またはes6
です。- 例:
{ "compilerOptions": { "module": "commonjs" } }
-
バベルの設定
package.json
ファイルのbabel-jest
設定が正しいことを確認してください。特に、transformIgnorePatterns
オプションを使用して、テストファイル以外のファイルをバベルで変換しないように設定する必要があります。
-
バベルプラグインの確認
追加のヒント
- エラーメッセージのスタックトレースを確認して、問題の原因となっているファイルやコード行を特定してください。
- Jestの設定ファイル(
jest.config.js
)がある場合は、その設定も確認してください。 - テストファイルの拡張子を
.tsx
に設定していることを確認してください。
例
// math.ts
export function add(a: number, b: number): number {
return a + b;
}
// math.test.ts
import { add } from './math';
test('adds numbers correctly', () => {
expect(add(2, 3)).toBe(5);
});
この例では、math.ts
モジュールが正しくエクスポートされ、math.test.ts
でインポートされています。Jestは、babel-jest
を使用してモジュールを変換し、テストを実行します。
注意
- 必要に応じて、バベルプラグインを使用してください。
package.json
ファイルのbabel-jest
設定が正しく設定されていることを確認してください。tsconfig.json
ファイルのmodule
オプションがcommonjs
またはes6
に設定されていることを確認してください。
代替方法
-
モジュールシステムを変更する
-
Jestの設定を変更する
-
バベルプラグインを使用する
typescript jestjs babel-jest