Superagent升级至7.0.2后请求变量为undefined问题求助
Superagent 7.x 中请求实例赋值为undefined的解决方案
Superagent从v4版本起调整了.end()方法的返回逻辑:当你为.end()传入回调函数时,它不再返回请求实例,而是直接返回undefined——这就是升级到7.0.2后,mySuperagent变量变成undefined的核心原因,和v3版本的行为完全不同。
解决方案1:拆分请求实例创建与回调执行
先创建并保存请求实例,再单独调用.end()添加回调逻辑:
// 先创建请求实例并赋值 const mySuperagent = superagent.get(getURL); // 后续再绑定回调执行请求 mySuperagent.end(function (err, res) { // 此处处理响应或错误 }); // 此时mySuperagent为有效的请求实例,可在其他位置正常使用
解决方案2:使用Promise风格(推荐)
Superagent 7.x原生支持Promise,去掉.end()的回调函数后,它会返回Promise对象,同时你可以提前保存请求实例:
// 创建请求实例 const mySuperagent = superagent.get(getURL); // 用Promise链式调用处理响应 mySuperagent .then(res => { // 处理成功响应 }) .catch(err => { // 处理请求错误 }); // 或者用async/await语法(更简洁) async function fetchData() { const mySuperagent = superagent.get(getURL); try { const res = await mySuperagent; // 处理响应数据 } catch (err) { // 捕获并处理错误 } }
通过以上两种方式修改后,mySuperagent就能正确保存请求实例,可在代码其他位置正常调用。
内容的提问来源于stack exchange,提问作者nerz
相关产品推荐
相关产品推荐

