😎

[next/jest] jest-transform-graphql でのトランスフォームエラー

2023/07/10に公開

実行環境

"jest": "29.5.0"
"next": "13.2.4"

jest-transform-graphql でのトランスフォームエラー

graphql コードを読み込む際、jest-transform-graphqlを利用してトランスフォームを行うのですが、下記のエラーに遭遇しました。
jestのバージョン28のブレーキングチェンジで発生したエラーとされていますが、バージョン29でも同様のエラーが発生しました。

    `process()` or/and `processAsync()` method of code transformer found at
    "node_modules/jest-transform-graphql/index.js"
    should return an object or a Promise resolving to an object. The object
    must have `code` property with a string of processed code.
    This error may be caused by a breaking change in Jest 28:
    https://jestjs.io/docs/upgrading-to-jest28#transformer
    Code Transformation Documentation:
    https://jestjs.io/docs/code-transformation

対処方法

transform-graphql-jestcodeオブジェクトを付与するように書き換えて transform に設定すると利用できるようになります。
一時的な対応なのでバージョンが上がったタイミングで挙動を確認してください。

...
transform: {
    '\\.(gql|graphql)$': './transform-graphql-jest-similar.js',
}
// transform-graphql-jest-similar.js
const { process: upstreamProcess } = require("jest-transform-graphql");

const process = (...args) => {
  const code = upstreamProcess(...args);
  return { code };
};

module.exports = { process };

参照

GitHubで編集を提案

Discussion