可能的未处理承诺拒绝(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:网络请求失败