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

发送HTTP推送通知后调用Process.exit()不生效问题如何解决

问题原因

你的pushNotification函数虽然标记为async,但内部使用的是回调风格的request调用,没有返回等待请求完成的Promise,所以await pushNotification()会立刻执行完成,不等HTTP请求发送、返回就触发了process.exit(),直接终止进程导致请求没发出去。

修复方案

方案1:改造pushNotification为Promise风格

把回调逻辑包裹成Promise返回,这样await就能正确等待请求结束再执行退出逻辑:

await page
.waitForSelector(".guest", { timeout: 5000 })
.then(async () => {
  console.log("Not logged in, exiting");
  await pushNotification("App has stopped, probably session expired.");
  process.exit();
})

async function pushNotification(msg) {
  return new Promise((resolve, reject) => {
    var options = {
      method: "POST",
      url: "url",
      headers: {
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        to: "",
        title: "",
        body: msg,
      }),
    };
    request(options, function (error, response) {
      if (error) {
        console.error('推送发送失败', error)
        reject(error)
        return
      };
      console.log(response.body);
      resolve(response.body)
    });
  })
}

方案2:使用原生支持Promise的请求库

如果可以更换依赖,推荐用axios、node-fetch这类原生返回Promise的请求库,不需要自己封装回调逻辑,示例用axios实现如下:

const axios = require('axios')
async function pushNotification(msg) {
  const res = await axios.post('你的请求地址', {
    to: "",
    title: "",
    body: msg,
  }, {
    headers: {
      "Content-Type": "application/json",
    }
  })
  console.log(res.data)
  return res.data
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:54:05