使用 Firebase 函数发出 http 请求时找不到地址

Address not found when making http request with Firebase functions

我已经使用 Dialogflow 为 Google 操作设置了一个 Firebase 函数,该函数使用 node-fetch 进行 API 调用,但是当我 运行 遇到问题时提出实际要求。即使我可以在浏览器中访问 URL,我也无法在我的函数运行时解析它。

错误:

{"message":"request to https://jsonplaceholder.typicode.com/users failed, reason: getaddrinfo ENOTFOUND jsonplaceholder.typicode.com jsonplaceholder.typicode.com:443","type":"system","errno":"ENOTFOUND","code":"ENOTFOUND"}

代码:

import * as functions from 'firebase-functions';
import fetch from 'node-fetch';

export const fetchTrainTimetable = async (): Promise<object> => {
  const path = `https://jsonplaceholder.typicode.com/users`

  try {
    const response = await fetch(path, {method: 'GET'});
    return await response.json();
  } catch (error) {
    return error;
  }
}

为了使用 Firebase 函数发出出站请求,我是否需要在请求中包含缺少的内容?路径是什么似乎并不重要,我总是以这个错误结束。

问题是您在默认 "spark" 计划下使用 Firebase Functions,该计划是免费的,但存在无法访问 Google 以外的 Web 或网络服务的限制的。

您可以upgrade加入"blaze"计划,该计划允许网络访问,但需要您注册信用卡并收取使用费。但是,即使在 blaze 计划中,也有一个免费套餐,他们不会向您收费。此免费层通常足以进行试验、初始开发和在早期部署下使用。部署后,Google 助手会提供云积分,这也应该抵消这一点。