首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MirageJs:如果使用passthrough调用api,则无法使用axios

MirageJs:如果使用passthrough调用api,则无法使用axios
EN

Stack Overflow用户
提问于 2021-09-15 18:54:10
回答 2查看 661关注 0票数 8

我在react中有一个应用程序,里面有一个切片和一个thunk。我使用@reduxjs/工具包,用"createSlice“api创建slice,用"createAsyncThunk”创建thunk。

我的想法是:

代码语言:javascript
复制
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;
})

在我的应用程序中,运行一个带有模拟api的幻影服务器,并在我的真实服务器上运行一个"passthrough“。

当我发送"loginThunk“thunk时,它会在我的reducer中运行"loginThunk.pending”并停止。

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

如果我发送"loginThunk“推送,没有运行mirage服务器,它就能工作。

如果我在没有运行mirage服务器的情况下发送"loginThunk“消息,但我使用"fetch”而不是axios,它可以工作。

这似乎是axios和mirageJs通过之间的问题。

有什么想法吗?

非常感谢

EN

回答 2

Stack Overflow用户

发布于 2021-11-30 10:36:44

事实证明,问题源于Axios0.21.2中更改的xhr适配器。处理程序request.onreadystatechange不再添加到请求中(当您启动mirageJS服务器时,似乎重新定义了XMLHttpRequest)。

解决方案是创建您自己的适配器-基本上是复制lib/adapters/xhr.js并确保通过if语句的else分支-并在您的axios配置中使用它。

票数 1
EN

Stack Overflow用户

发布于 2022-01-08 17:52:38

我修复了将axios降级到0.21.0的问题,并使用miragejs:0.1.410.1.42.00.1.43.0

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69198465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档