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

Posted

技术标签:

【中文标题】可能的未处理承诺拒绝(id:0):TypeError:适配器不是函数。 (在“适配器(配置)”中,“适配器”未定义)?【英文标题】:Possible Unhandled Promise Rejection (id: 0): TypeError: adapter is not a function. (In 'adapter(config)', 'adapter' is undefined)? 【发布时间】:2021-06-03 23:05:57 【问题描述】:

当我请求登录 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 __callImmediates@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2736:35 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@[本机代码] callFunctionReturnFlushedQueue@[本机代码]

运行环境: 反应原生@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
      
  

错误显示:

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

【问题讨论】:

【参考方案1】:

我找到了错误的原因。

我使用 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-fetch-blob\index.js

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

【讨论】:

以上是关于可能的未处理承诺拒绝(id:0):TypeError:适配器不是函数。 (在“适配器(配置)”中,“适配器”未定义)?的主要内容,如果未能解决你的问题,请参考以下文章

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

如何解决该错误>> WARN可能的未处理承诺拒绝(id:0):

如何修复可能的未处理承诺拒绝(id:0)?以及如何修复无法读取未定义的属性“导航”?

可能的未处理承诺拒绝(id:1):TypeError:网络请求失败

Axios 承诺处理 - 在 react-native 中获取“可能的未处理承诺拒绝 - 类型错误:网络请求失败”

可能未处理的承诺拒绝(id 0)反应原生