我的自定义 Netlify 无服务器函数不会从 Prismic API 获取数据
Posted
技术标签:
【中文标题】我的自定义 Netlify 无服务器函数不会从 Prismic API 获取数据【英文标题】:My custom Netlify serverless function won't fetch data from Prismic API 【发布时间】:2021-10-30 03:26:22 【问题描述】:我正在尝试为 Netlify 编写一个无服务器函数,该函数本质上是从 Prismic API(我正在使用的无头 CMS)获取 JSON。
我这样做的原因是最终提供一个 Snipcart,一个购物车,带有一个“产品 URL”,它可以用来抓取 JSON 并验证交易。信息在这里:https://docs.snipcart.com/v2/configuration/json-crawler
const Prismic = require("@prismicio/client");
exports.handler = async function ()
Prismic.client("https://my-repository.cdn.prismic.io/api/v2", req: req )
.then(function (api)
return api.query(Prismic.Predicates.at("document.type", "product"));
)
.then(function (response)
console.log(response)
const data = await response.json();
return
statusCode: 200,
headers :
'Content-Type': 'application/json',
'Accept': 'application/json'
,
body: JSON.stringify(data),
;
);
;
使用上面的代码,我从控制台收到两条错误消息:
GET http://localhost:8888/.netlify/functions/prismic 500(内部服务器错误)
Uncaught (in promise) SyntaxError: Unexpected token S in JSON at position 0
...我对这个世界很陌生,非常感谢任何帮助!
【问题讨论】:
api.query
看起来不会返回 json
我在这里关注 Prismic 查询文档:prismic.io/docs/technologies/how-to-query-the-api-javascript 你认为它们看起来应该工作吗?...现在我已经删除了 json 辅助函数来测试我是否得到任何来自 API 的响应。什么都没有,只是一个 TypeError 'Prismic.client(...).then is not a function'
【参考方案1】:
好吧,经过一番挣扎和很多挠头后,我让它开始工作了。
所有内容都在 Prismic 文档中,但经过大量故障排除https://prismic.io/docs/technologies/how-to-query-the-api-javascript
希望这可以帮助另一个初学者:
const Prismic = require("@prismicio/client");
exports.handler = async function ()
const client = Prismic.client("http://my-repository.cdn.prismic.io/api");
return client
.query(Prismic.Predicates.at("document.type", "product"))
.then(function (response)
let data = response.results;
let newItems = Object.values(data).map((item) =>
return
name: item.data.product.name.value[0].text,
id: item.uid,
price: item.data.product.price.value,
url: 'https://my-site.netlify.app/.netlify/functions/prismic',
;
);
return
statusCode: 200,
headers:
"Content-Type": "application/json",
Accept: "application/json",
,
body: JSON.stringify(newItems),
;
);
;
【讨论】:
请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。以上是关于我的自定义 Netlify 无服务器函数不会从 Prismic API 获取数据的主要内容,如果未能解决你的问题,请参考以下文章
在建立安全 TLS 连接之前,Netlify 和 Faunadb 客户端网络套接字断开连接