首页 > 解决方案 > 可能的未处理承诺拒绝(id:0):TypeError:适配器不是函数。(在“适配器(配置)”中,“适配器”未定义)?

问题描述

当我请求登录 api 时,错误是:

可能的未处理承诺拒绝(id:0):TypeError:适配器不是函数。(在“适配器(配置)”中,“适配器”未定义)dispatchRequest@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:126225:19 tryCallOne@http://10.0。 2.2:8081/index.bundle?platform=android&dev=true&minify=false:27056:16 http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:27157:27 _callTimer@http:// 10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:30596:17 _callImmediatesPass@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:30635:17 callImmediates@ http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:30852:33 __callImmedates@http://10.0.2.2:8081/index. http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2522:34 __guard@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2719 :15 flushedQueue@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2521:21 flushedQueue@[native code] callFunctionReturnFlushedQueue@[native code]

运行环境:react-native@63 axios

axios 配置:

import axios from 'axios';
import {getAccessToken} from './util'

const service = axios.create({
    baseURL: '/',
    timeout: 6000
})
var token;


service.interceptors.request.use(config => {
    token = getAccessToken()
    if (config.headers['Content-Type']) {
        console.log(config.headers['Content-Type'])
    } else {
        config.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
    }
    config.headers['Authorization'] = `Bearer ${token}`
    return config
}, error => {
    return Promise.reject(error)
})

service.interceptors.response.use(response => {
    return response.data
}, error => {
    return Promise.reject(error)
})

export {service as axios}

请求登录:

const {code, message, data} = await login({phone, password})
setLoading(false)
if (code === 1) {
  saveAccessToken(data.access_token)
  ToastAndroid.showWithGravity(
    message,
    ToastAndroid.SHORT,
    ToastAndroid.CENTER
  )
  getInfo(data.access_token)
  navigation.navigate('Home');
} else {
  setErrortext(message)
  return
}

存储示例:

  const saveAccessToken = async (accessToken) => {
      try {
          await AsyncStorage.setItem('access_token', accessToken)
      } catch (error) {
          return error
      }
  }

错误显示: 错误图像

当我不是调试器模式并收到此错误时,如果调试器模式运行正常。我不知道错误在哪里?请帮助我,谢谢!

标签: axiosreact-native-android

解决方案


我找到了错误的原因。

我使用 rn-fetch-blob 发送 http 请求,这个包使用fetch,但我使用axios和 ternimal 提示:

需要循环:node_modules\rn-fetch-blob\index.js -> node_modules\rn-fetch-blob\polyfill\index.js -> node_modules\rn-fetch-blob\polyfill\Blob.js -> node_modules\rn-获取-blob\index.js

我删除这个包并发送 http 请求就可以了!


推荐阅读