标签: miragejs

MirageJs:如果我通过直通调用 api,则无法使用 axios

我有一个应用程序与切片和重击做出反应。我使用 @reduxjs/toolkit 并使用“createSlice”api 创建了切片,并使用“createAsyncThunk”创建了 thunk。

我的想法是:

export const loginThunk = createAsyncThunk('login/local', async (loginData: LoginData) => {

    const {username, password} = loginData;
    
    const l = await axios.post(`${BASE_URL}_login/local`, {username, password}, {
        headers: {'Content-Type': 'application/json'}
    })
    return l.data;
})
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,运行一个带有模拟 API 的 Mirage 服务器,并在我的真实服务器上运行“直通”。

当我调度“loginThunk”thunk时,它在我的reducer中运行“loginThunk.pending”案例并停止。

它永远不会被实现或被拒绝。

如果我在没有运行 Mirage 服务器的情况下发送“loginThunk”thunk,它就可以工作。

如果我在没有运行 Mirage 服务器的情况下调度“loginThunk”thunk,但我使用“fetch”而不是 axios,则它可以工作。

看来是 axios 和 mirageJs 直通之间的问题。

有任何想法吗??

太感谢了

reactjs redux axios miragejs

10
推荐指数
1
解决办法
2998
查看次数

Miragejs 种子函数未调用

我正在尝试设置 Miragejs 服务器,但由于某种原因,该seeds函数未被调用。routes调用另一个服务器函数并正确映射路由。

export default function makeServer({ environment = 'test' } = {}) {
  return new Server({
    environment,

    models: {
      user: Model,
      diary: Model,
    },

    seeds(server) {
      debugger; // not hit
      seedUsers(server);
      seedDiaries(server);
    },

    routes() {
      debugger; // hit
      this.namespace = 'api';
      this.get('/users', (schema) => schema.users.all());
      this.get('/diaries', (schema) => {
        debugger; // hit
        schema.diaries.all();
      });
    },
  });
}
Run Code Online (Sandbox Code Playgroud)

我已尝试复制粘贴提供的示例,但该seeds方法仍然没有被调用。

miragejs 包作为开发包安装,使用的版本是 0.1.40。该makeServer函数在 index.jsx 文件中调用如下:

if (process.env.NODE_ENV === 'development') {
  makeServer(); …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs miragejs

3
推荐指数
1
解决办法
361
查看次数

MirageJS 错误响应不会导致错误

按照文档,我在里面设置了这个处理程序routes()

this.put(
  '/admin/features/error/environment/test',
  // @ts-ignore
  () => new Response(500, {}, { errors: ['The database went on vacation'] }),
);
Run Code Online (Sandbox Code Playgroud)

Mirage 确实收到了我所设置的内容。这是来自浏览器控制台日志的响应。请注意,尽管500 显示在_bodyInit

{
    "type": "default",
    "status": 200,
    "ok": true,
    "statusText": "",
    "headers": {
        "map": {
            "content-type": "text/plain;charset=UTF-8"
        }
    },
    "url": "",
    "bodyUsed": false,
    "_bodyInit": 500,
    "_bodyText": "[object Number]"
}
Run Code Online (Sandbox Code Playgroud)

请注意,我需要ts-ignore这可能是一条线索。TS 抱怨new Response预计有 0-2 个参数,但得到了 3 个。

miragejs

1
推荐指数
1
解决办法
593
查看次数

标签 统计

miragejs ×3

reactjs ×2

axios ×1

javascript ×1

redux ×1