我在我的项目中使用 msw 来模拟获取 API 请求,我检查了网络选项卡,并且 mockServiceWorker.js 资源保持在“待处理”状态,此外,响应检索 index.html 而不是我在处理程序中模拟的 JSON 响应文件。也许我遇到了一个愚蠢的错误,但我没有在网上找到可以帮助我的资源,在此先感谢!
环境
姓名 | 版本 |
---|---|
生活垃圾 | 0.28.2 |
浏览器 | 铬 90.0.4430.93 |
操作系统 | 视窗 10 |
请求处理程序
我"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);
}
}