【问题标题】:Using node the process doesn't exit once finished executing使用节点,一旦完成执行,进程就不会退出
【发布时间】:2019-07-20 16:03:48
【问题描述】:
运行代码,其主体类似于下面的代码,代码执行良好,但连接完成后不会关闭,我查看了node process doesn't exit after firebase once,但我正在寻找一些不会每次在无服务器框架中使用该函数时都给我一个错误。
const firebase = require('firebase-admin');
return new Promise((resolve, reject) => {
var message = {
notification: {
title: `**`,
body: `**`
},
condition: `**`
};
firebase.messaging().send(message).then((response) => {
resolve(response);
})
.catch((error) => {
reject(error);
});
});
我怎样才能让它退出这个过程而不产生无服务器错误?
【问题讨论】:
标签:
node.js
firebase
firebase-cloud-messaging
aws-serverless
【解决方案1】:
我做了更多研究,发现在不退出 AWS 无服务器函数的情况下执行此操作的方法是使用 firebase.messaging().goOffline() 函数而不是 process.exit() 函数
const firebase = require('firebase-admin');
return new Promise((resolve, reject) => {
var message = {
notification: {
title: `**`,
body: `**`
},
condition: `**`
};
firebase.messaging().send(message).then((response) => {
resolve(response);
firebase.messaging().goOffline();
})
.catch((error) => {
reject(error);
firebase.messaging().goOffline();
});
});
【解决方案2】:
您的问题有点含糊,所以我可能会产生误解,但我认为您只需要process.exit() 即可终止Node 进程。
const firebase = require('firebase-admin');
return new Promise((resolve, reject) => {
var message = {
notification: {
title: `**`,
body: `**`
},
condition: `**`
};
firebase.messaging().send(message).then((response) => {
resolve(response);
process.exit(0) // Addition; zero exit code indicates success
})
.catch((error) => {
reject(error);
process.exit(1) // Addition; non-zero exit code indicates something went wrong
});
});