web-dev-qa-db-ja.com

Jest transformIgnorePatternsが機能しない

私はこれについて他の質問や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を実行するための変換プロパティを追加してみました。

助けてください!

14
Heather Roberts

次のように、.babelrcをbabel.config.jsに変更するまで、transformIgnorePatternsは機能しませんでした。

module.exports = {
    "presets": [
        "@babel/preset-env"
    ]
};

このコメントで見られるように: https://github.com/facebook/jest/issues/6229#issuecomment-40353946

8
NJCodeMonkey

今のところ回避策として、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']
};
5
Heather Roberts

rootDirを使用している可能性があります。試してください:

    "transformIgnorePatterns": [
      "node_modules/(?!(mathletics-portal-communication-service))"
    ]
0
Yorkshireman