Ресурс msw mockServiceWorker.js остается в «ожидающем» статусе, когда я открываю вкладку сети в моем браузере.

Я использую msw для имитации запроса API извлечения в моем проекте, я проверяю вкладку сети, и ресурс mockServiceWorker.js остается в статусе «ожидающий», кроме того, ответ извлекает index.html вместо ответа JSON, который я имитирую в обработчиках файл. Может быть, я совершаю глупую ошибку, но я не нашел в Интернете какого-либо ресурса, который мог бы мне помочь, заранее спасибо!

Среда

Обработчики запросов

я бегу "dev": "webpack serve --mode development", в CLI и это мои конфигурации

      // index.tsx
...
if (process.env.NODE_ENV === 'development') require('./mocks/browser');

const rootElement = document.getElementById('app');

ReactDOM.render(<ThemeProvider><App /></ThemeProvider>, rootElement);

// ./mock/browser.ts
import { setupWorker } from 'msw';
import { handlers } from './handlers';

const worker = setupWorker(...handlers);

worker.start();

// handlers
import { rest } from 'msw';

const baseURL = 'http://localhost:8080';

const handlers = [
  rest.get(`${baseURL}/navlink-routes`, (_req, res, ctx) => res(
    ctx.status(200),
    ctx.json({
      result: [
        { label: 'Shop', path: 'shop' },
        { label: 'Wishlist', path: 'wishlist' },
        { label: 'Checkout', path: 'checkout' },
      ],
    }),
  )),
  rest.get('*', (req, res, ctx) => res(
    ctx.status(500),
    ctx.json({ error: `Please add request handler for ${req.url.toString()}` }),
  )),
];

export { handlers };

Актуальный запрос

      // Example of making a request. Provide your code here.
async function getData(): Promise<void> {
      try {
        const response = await fetch('http://localhost:8080/navlink-routes', { signal });

        if (!response.ok) throw new Error(`Server error ${response.status}`);

        const { result } = await response.json();
        setLinkList(result);
      } catch (e) {
        if (e.name !== 'AbortError') setError(true);
      }
    }

1 ответ

Благодаря @kettanaito я понимаю, что я неправильно настроил общедоступный каталог, я использовал свой каталог dist, который я создал для производственных целей, вызывая:

webpack --mode production

Следуя предложению, я создал новый каталог public / и позвонил:

npx msw init public

Это решает проблему 👍

Другие вопросы по тегам