You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Axios调用post方法报post is not a function错误排查

报错:(0 , _dbExpress.default)(...).post is not a function

问题背景

调用axios封装实例发起注册POST请求时,立即触发上述报错。经Postman验证服务端接口运行正常,可排除服务端故障;同版本依赖(axios@^0.27.2、expo@~45.0.0)的其他项目中,相同业务逻辑可正常运行。

关联代码

注册请求逻辑

const signup = dispatch => async ({email, password, username}) => {
        try {
            const response = await dbExpress().post('/signup', {email, password, username});
            await AsyncStorage.setItem('token', response.data.token);
            dispatch({type: 'signin', payload: response.data.token});
            navigate('mainFlow');
        } catch (error) {
            console.log(error.message);
            dispatch({type: 'add_error', payload: 'Something went wrong with sign up'});
        }
    };

Axios拦截器配置

dbExpress.interceptors.request.use(
    async (config) => {
        const token = await AsyncStorage.getItem('token');
        console.log("*** inside api")
        if (token) {
            console.log("*** token exist")
            config.headers.Authorization = `Bearer ${token}`;
        }
        return config;
    },
    (err)=>{
        console.log("*** reject " +  err.message);
        return Promise.reject(err);
    }
);

export default dbExpress;

相关依赖版本

"axios": "^0.27.2",
"expo": "~45.0.0",

根因分析

dbExpress是已经通过axios.create()初始化完成的axios实例对象,本身直接挂载了post/get等请求方法,不需要加()作为函数执行。
代码中写的dbExpress()是把实例对象当作普通函数执行,返回值不是axios实例,自然不存在.post方法,因此触发报错。其他同逻辑项目可正常运行,是因为调用时没有额外添加这对括号。

修复方法

将注册逻辑中的请求调用代码修改为直接调用实例方法,去掉多余的括号:

// 修改前
const response = await dbExpress().post('/signup', {email, password, username});
// 修改后
const response = await dbExpress.post('/signup', {email, password, username});

注意:所有调用该封装实例的位置,都不要额外添加括号执行,直接使用实例挂载的请求方法即可。

内容的提问来源于stack exchange,提问作者nicc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 18:18:26