Closed11
next.jsにmswを入れる
edgeで使えるかわからんかったけど、async_hooksしかnodeのAPI使ってなさそうだからいけるかな
App routerだとできなそう
Server ComponentとかRouter Hndlerとかどう対応するんだろう
fetchのインターセプト系のmockじゃ無いprismとか使うしか無いのか、、、
Next.jsのプロセス周りの話してる
ここで結構議論されてる
このサンプルで動いてる感じする
サンプルの 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();
}
}
ここにも書いてあった
とりあえずこれでサーバー側もmswで実行できた。
vercelのデプロイも通って、vercel上でも実行できてるので機能上の問題はなさそう。
ブラウザ側はいつも通り設定すればいけそうなので、問題なさそう
middlewareはprocess.env.NEXT_RUNTIME
がedgeだから./node
がインポートできないエラーがmswの内部で発生して、どうしようもなさそう
このスクラップは3ヶ月前にクローズされました