我的 SvelteKit 项目中的“无服务器功能”经常出现错误
Posted
技术标签:
【中文标题】我的 SvelteKit 项目中的“无服务器功能”经常出现错误【英文标题】:I'm getting an error in "Serverless Function" in my SvelteKit Project often 【发布时间】:2022-01-22 02:10:29 【问题描述】:我不知道为什么我有时会收到此错误。
504: GATEWAY_TIMEOUT
Code: FUNCTION_INVOCATION_TIMEOUT
我正在使用加载函数来获取索引页面上的帖子。
<script context="module">
export async function load( page, fetch )
const pagination = page.query.get('page') ?? 1;
let PER_PAGE = 2;
// calculate start page
let startPage = +pagination === 1 ? 0 : (+pagination - 1) * PER_PAGE;
// fetch total/count
const totalUrl = `https://myblog.herokuapp.com/posts/count`;
const totalRes = await fetch(totalUrl);
// fecth articles
const url = `https://sveltestrapiblog.herokuapp.com/posts?_sort=created_at:DESC&_start=$startPage&_limit=$PER_PAGE`;
const articelRes = await fetch(url);
if (articelRes.ok && totalRes.ok)
return
props:
posts: await articelRes.json(),
total: await totalRes.json(),
pagination: +pagination
;
return
status: articelRes.status,
error: new Error(`Could not load $url`)
;
</script>
我不知道怎么了。
【问题讨论】:
这是在本地还是在您部署站点时?如果已部署,您将部署到哪里? 这是我部署的时候。首先我部署在 Netlify,现在部署在 Vercel。两者都得到相同的错误。 【参考方案1】:当您部署 SvelteKit 应用程序时,它使用无服务器函数来处理传入请求并为每个页面呈现 html。当您部署到 Netlify 或 Vercel 等提供商时,它们会限制这些功能可以运行的时间。在 Vercel 上,爱好计划的限制是 5 seconds,而 Netlify 的限制是 10 seconds。如果您的页面渲染时间超过此限制,您将收到 FUNCTION_INVOCATION_TIMEOUT 错误。
我注意到您在https://sveltestrapiblog.herokuapp.com/posts 的 API 在我第一次点击它时需要一些时间来返回响应,可能是因为它在一段时间不活动后启动。发生这种情况时,如果您花费的时间超过执行时间限制,您将看到一个错误。您要么需要处理此错误,要么确保您的 API 始终可以在 5 秒内返回响应。
【讨论】:
谢谢!我只需要确保它在后端。以上是关于我的 SvelteKit 项目中的“无服务器功能”经常出现错误的主要内容,如果未能解决你的问题,请参考以下文章