Next.js Discord

Discord Forum

`fetch failed` using mock service worker and Next 15

Unanswered
Tomistoma posted this in #help-forum
Open in Discord
TomistomaOP
I have an nextjs 15 project (v15.1.7 to be specific) with MSW 2 (2.3.1). There isn't too much info online on setting up nextjs with msw, and the official msw examples repo is missing nextjs. However based on what there is, I have configured it as so:
// app/mocks/browser.ts
import { setupWorker } from 'msw/browser';

import handlers from './handlers';

export const worker = setupWorker(...handlers);

// app/mocks/server.ts
import { setupServer } from 'msw/node';

import handlers from './handlers';

// this configures a Service Worker with the given request handlers.
export const server = setupServer(...handlers);
export * from 'msw';

// app/mocks/index.ts
export const setupMsw = async () => {
  if (typeof window === 'undefined') {
    const { server } = await import('./server');
    server.listen();
  } else {
    const { worker } = await import('./browser');
    void worker.start({
      serviceWorker: {
        url: `${process.env.NEXT_PUBLIC_BASE_PATH ?? ''}/mockServiceWorker.js`,
      },
    });
  }
};

setupMsw is called inside of a client component which is inserted into root layout of the app.

The mocking is used to mock API endpoints of an api which is fetched by a number of different server actions. This mocking behaves well, and it works, most of the time. However, there are certain things that I do (such as making a new file, modifying the middleware, and some other things I'm not sure of) that cause something related to the mocking to fail. It throws an error like this:
TypeError: fetch failed
    at async getRevisionHistory (src\lib\getRevisionHistory.ts:9:21)
    at async RevisionsLayout (src\app\revision\[revision]\layout.tsx:17:23)
   7 |     //....
   8 |     //....
>  9 |     const response = await fetch(url);
     |                     ^
  10 |
  11 |     if (!response.ok) {
  12 |       throw new Error('Failed to fetch data'); {
  digest: '1562509719',
  [cause]: [Error: unknown scheme]
}

.........

2 Replies

TomistomaOP
.........
My dev partner has also been able to reproduce this issue, although it's a different cause of ETIMEDOUT instead of unknown scheme. The only fix is to enter the file that is erroring and save it.

I have been unable to figure out what is causing this problem and I really don't know where to look to fix it either. I can't find much online about it, but it is casuing some real issues while trying to build this app.

Does anyone know how I could fix this, it would be massively appreciated?
TomistomaOP
anyone have any idea?