在 Firebase 云函数中出现 "getaddrinfo ENOTFOUND" 错误
Getting "getaddrinfo ENOTFOUND" Error in Firebase Cloud Function
我在 Firebase 云函数中编写了一个函数来为 Onesignal API 创建一个 HTTP Post。我首先在 Postman 中测试我的请求,并确保 body 和 headers 正确且有效 - 它成功了。然后我继续使用 request npm package 创建一个 post 请求。这是我目前所拥有的
exports.addMessage = functions.https.onRequest((req, res) => {
const Requestbody = {
included_segments: ['Subscribed Users'],
app_id: 'XXXXXXXXXX',
contents: { 'en': 'Test Notification Body' },
headings: { 'en': 'Test Title' }
}
httpRequest.post({
url: 'https://onesignal.com/api/v1/notifications',
headers: {
'Authorization': 'Some Token...',
'Content-Type': 'application/json'
},
body: JSON.stringify(Requestbody)
},
function (error, response, body) {
if (error) { return res.status(500).send('Failed - ' + JSON.stringify(error)); }
console.log('Onesignal Response: ' + JSON.stringify(response));
return res.status(200).send('Success');
});
}
每次调用此云函数时,request.post 都会调用 returns 出现以下错误:
getaddrinfo ENOTFOUND onesignal.com onesignal.com:443
但是我提供的 URL 正是我用来在 Post Man 中测试的那个
正如 Doug Stevenson 和 LundinCast 所指出的,我的 Firebase 计划不支持调用外部主机。我至少需要升级到 Flame
计划来支持它。
我在 Firebase 云函数中编写了一个函数来为 Onesignal API 创建一个 HTTP Post。我首先在 Postman 中测试我的请求,并确保 body 和 headers 正确且有效 - 它成功了。然后我继续使用 request npm package 创建一个 post 请求。这是我目前所拥有的
exports.addMessage = functions.https.onRequest((req, res) => {
const Requestbody = {
included_segments: ['Subscribed Users'],
app_id: 'XXXXXXXXXX',
contents: { 'en': 'Test Notification Body' },
headings: { 'en': 'Test Title' }
}
httpRequest.post({
url: 'https://onesignal.com/api/v1/notifications',
headers: {
'Authorization': 'Some Token...',
'Content-Type': 'application/json'
},
body: JSON.stringify(Requestbody)
},
function (error, response, body) {
if (error) { return res.status(500).send('Failed - ' + JSON.stringify(error)); }
console.log('Onesignal Response: ' + JSON.stringify(response));
return res.status(200).send('Success');
});
}
每次调用此云函数时,request.post 都会调用 returns 出现以下错误:
getaddrinfo ENOTFOUND onesignal.com onesignal.com:443
但是我提供的 URL 正是我用来在 Post Man 中测试的那个
正如 Doug Stevenson 和 LundinCast 所指出的,我的 Firebase 计划不支持调用外部主机。我至少需要升级到 Flame
计划来支持它。