我已经用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函数,该计划是免费的,但有一个限制,即它不能访问谷歌以外的web或网络服务。
你可以升级到"blaze"计划,该计划允许网络访问,但需要注册信用卡并收取使用费。然而,即使在火灾计划中,也有一个免费的等级,他们不会向你收费。这个免费层通常足以进行试验、初始开发和在早期部署时使用。一旦你被部署,谷歌助手就提供了云积分,这也应该抵消这一点。