かつ丼はおやつに入りますか?

コンピュータの話とか食べ物の話とか旅行とかいろいろ

vue3でmswを使ったらjsonレスポンスが返らずhtmlのDOMが返ってきたときの対処

自分の場合は Service Worker が起動する前にリクエストが走って、画面リロードしようがキャッシュが有効で304 Not Modifiedが返ってくる状況だったと思われる。

Async/Awaitを使って起動順を整理したら解消した。

main.ts でcreateAppしているところを以下のように修正して worker.startとcreateAppの順番を整理した。

main.ts

async function enableMocking() {
  if (process.env.NODE_ENV !== 'development') {
    return
  }
  const { worker } = await import('./mocks/browser')
  return worker.start({
    onUnhandledRequest: 'bypass'
  })
}

enableMocking().then(() => {
  const app = createApp(App)

  app.use(createPinia())
  app.use(router)

  app.mount('#app')
})