Closed11

next.jsにmswを入れる

まるべいじまるべいじ

fetchのインターセプト系のmockじゃ無いprismとか使うしか無いのか、、、

まるべいじまるべいじ

サンプルの if (process.env.NEXT_RUNTIME === "nodejs")が重要なんだな。
これがあることによって、importの解決タイミングを意図的に遅延させてる。

RUNTIMEが結果的にnodejsで他のRUNTIMEが来ないとしても必要だ。

export async function register() {
  console.log("[i] %s %d", process.env.NEXT_RUNTIME, process.pid);
  if (process.env.NEXT_RUNTIME === "nodejs") {
    const { initMocks } = await import("@/lib/msw");
    initMocks();
  }
}

ここにも書いてあった
https://nextjs.org/docs/app/building-your-application/optimizing/instrumentation#importing-runtime-specific-code

まるべいじまるべいじ

https://github.com/salvage0707/app-router-msw

とりあえずこれでサーバー側もmswで実行できた。
vercelのデプロイも通って、vercel上でも実行できてるので機能上の問題はなさそう。

ブラウザ側はいつも通り設定すればいけそうなので、問題なさそう

まるべいじまるべいじ

middlewareはprocess.env.NEXT_RUNTIMEがedgeだから./nodeがインポートできないエラーがmswの内部で発生して、どうしようもなさそう

このスクラップは2024/08/19にクローズされました