3

我已经为使用 Dialogflow 进行 API 调用的 Google 操作设置了 Firebase 函数,node-fetch但在发出实际请求时遇到了问题。即使我可以在浏览器中访问该 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 功能发出出站请求,我需要在请求中添加一些内容吗?路径是什么似乎并不重要,我总是以这个错误告终。

4

1 回答 1

1

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

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

于 2018-11-24T00:10:06.747 回答