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

Promise相关报错求助:then()返回仍报错且部署失败

解决Promise相关ESLint错误:promise/no-nesting与promise/always-return

我来帮你拆解并解决这些ESLint规则报错,新手遇到这类规则问题确实容易懵,咱们一步步来:

先搞懂每个错误的本质

  • promise/no-nesting警告:这个规则是为了避免"回调地狱",禁止在一个Promise的then/catch回调里嵌套另一个Promise逻辑,要求代码保持扁平化的链式调用结构,让可读性更强。
  • promise/always-return错误:这个规则强制每个then()回调必须返回一个值(可以是普通值,也可以是另一个Promise),这样Promise链才能正确传递状态和数据,避免出现意外的未处理Promise状态。

针对你的代码片段修复

你给出的报错代码是:

return admin.messaging().sendToDevice(token_id,payload).then(theResult =>{ 
  console.log("then is returned"); 
});

1. 先解决promise/always-return错误

问题出在then回调里只执行了console.log,没有返回任何值。你只需要在回调最后返回结果(或者你需要传递的其他值)即可:

return admin.messaging().sendToDevice(token_id, payload)
  .then(theResult => { 
    console.log("then is returned"); 
    // 返回结果,让Promise链继续传递数据
    return theResult; 
  });

2. 再处理promise/no-nesting警告

这个警告通常是因为这段代码本身嵌套在另一个Promise的then回调里(比如你的sendNotification函数内部可能还有上层的异步逻辑)。举个例子,如果原来的代码结构是这样的:

exports.sendNotification = functions.https.onCall((data, context) => {
  return someOtherAsyncTask()
    .then(() => {
      // 这里嵌套了sendToDevice的Promise,触发警告
      return admin.messaging().sendToDevice(token_id, payload)
        .then(theResult => {
          console.log("then is returned");
          return theResult;
        });
    });
});

你需要把它改成扁平化的链式调用,去掉嵌套:

exports.sendNotification = functions.https.onCall((data, context) => {
  return someOtherAsyncTask()
    .then(() => {
      // 直接返回sendToDevice的Promise,进入下一个then环节
      return admin.messaging().sendToDevice(token_id, payload);
    })
    .then(theResult => {
      console.log("then is returned");
      return theResult;
    });
});

关于删除函数仍无法部署的问题

如果删除这个函数还是部署失败,说明你的代码里还有其他地方违反了这些ESLint规则。建议你:

  • 仔细查看完整的错误日志,定位所有报错的行号
  • 检查其他Promise的then回调,确保每个都返回了值
  • 排查是否有其他嵌套的Promise结构(比如在catch里又用了then却没做扁平化处理)

如果还是找不到问题,可以把完整的sendNotification函数代码贴出来,我再帮你进一步排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:08:14