私はこれについて他の質問やGithub上の他のプロジェクトを長い間見てきましたが、どれも私にとってはうまくいかないようです。
プロジェクトにサードパーティのライブラリを読み込んでいますが、Jestテストを実行するとエラーが発生します
export default portalCommunication;
^^^^^^
SyntaxError: Unexpected token export
> 1 | import portalCommunication from 'mathletics-portal-communication-service';
このライブラリをトランスパイルするためにJest設定をさまざまな方法で更新しようとしましたが、常に同じエラーが発生します。
これは私の現在のjest.config.jsファイルです:
module.exports = {
moduleNameMapper: {
'\\.(css|scss)$': 'identity-obj-proxy',
'\\.svg$': '<rootDir>/test/mocks/svg-mock.js'
},
setupFiles: ['./test/test-setup.js'],
transformIgnorePatterns: [
'<rootDir>/node_modules/(?!mathletics-portal-communication-service)'
]
};
また、このmathletics-portal-communication-serviceディレクトリに対してbabel-jestを実行するための変換プロパティを追加してみました。
助けてください!
次のように、.babelrcをbabel.config.jsに変更するまで、transformIgnorePatternsは機能しませんでした。
module.exports = {
"presets": [
"@babel/preset-env"
]
};
このコメントで見られるように: https://github.com/facebook/jest/issues/6229#issuecomment-40353946
今のところ回避策として、moduleNameMapper
オプションを使用してそのライブラリのモッククラスをロードするように設定を変更しました。代わりにtransformIgnorePatterns
を使用した方がいいので、それでもアイデアを歓迎します。
新しい設定:
module.exports = {
moduleNameMapper: {
'\\.(css|scss)$': 'identity-obj-proxy',
'\\.svg$': '<rootDir>/test/mocks/svg-mock.js',
'mathletics-portal-communication-service': '<rootDir>/test/mocks/mathletics-portal-communication-service-mock.js'
},
setupFiles: ['./test/test-setup.js']
};
rootDir
を使用している可能性があります。試してください:
"transformIgnorePatterns": [
"node_modules/(?!(mathletics-portal-communication-service))"
]