首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NextJS / vercel - 504错误“FUNCTION_INVOCATION_TIMEOUT”

NextJS / vercel - 504错误“FUNCTION_INVOCATION_TIMEOUT”
EN

Stack Overflow用户
提问于 2021-08-13 11:25:43
回答 3查看 5.1K关注 0票数 3

在部署到vercel之后,在我的一个页面上得到这个错误,它在dev模式下都工作得很好。

我认为问题可能是我的fetch /API之一,因为它使用来自第一个fetch请求的数据作为第二个提取请求的URL .

所有其他带有不同API/获取请求的页面都能正常工作.

代码语言:javascript
运行
复制
export const fetchData = async (page) => {
  try {
    const req = await fetch(
      "https://www.productpage.com/new/" +
        page
    );
    const html = await req.text();
    const $ = cheerio.load(html);

    let newProducts = [];

    for (let i = 1; i < 25; i++) {
      let name = $(`#product_listing > tbody > #_${i} > td:nth-child(2) > a`)
        .text()
        .replace(/\n/g, "");
      let pageSrc = $(
        `#product_listing > tbody > #_${i} > td:nth-child(2) > a`
      ).attr("href");
      const price = $(`#product_listing > tbody >#_${i} > td.price.notranslate`)
        .text()
        .replace(/\n/g, "");

      pageSrc = "https://www.productpage.com" + pageSrc;

      const req2 = await fetch(pageSrc); // here it is using data from first fetch for a 2nd request..
      const html2 = await req2.text();
      const $2 = cheerio.load(html2);

      const imageSrc = $2(
        "#product-main-image .main-image-inner:first-child img"
      ).attr("src");
      const name2 = $2("#product-details dd:nth-child(2)")
        .text()
        .replace(/\n/g, "");
      const brand = $2("#product-details dd:nth-child(4)")
        .text()
        .replace(/\n/g, "");

      newProducts.push({
        name: name,
        name2: name2,
        brand: brand,
        pageSrc: pageSrc,
        price: price,
        imageSrc: imageSrc,
      });
    }

    return newProducts;
  } catch (err) {}
};

module.exports = {
  fetchData,
};
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-08-13 14:48:26

此错误表明API响应花费的时间太长,无法响应

当使用带有Hobby计划的Vercel时,您的无服务器API路由可以只需处理5秒。这意味着5秒后,路由将以504 GATEWAY TIMEOUT错误进行响应。

当使用next dev在本地运行时,这些相同的限制不适用。

要解决这个问题,您需要减少API路由响应或升级Vercel计划所需的时间。

票数 9
EN

Stack Overflow用户

发布于 2022-09-20 05:39:35

就我而言,任何职能都没有出现重大延误。您可以在函数中使用此方法进行检查。

代码语言:javascript
运行
复制
console.time()

在我的例子中,我需要安装mongodb。

代码语言:javascript
运行
复制
"mongodb": "^3.6.3"

在mongodb安装之后,很慢的网站上的页面只是瞬间加载。

票数 0
EN

Stack Overflow用户

发布于 2022-11-24 12:22:43

在我的例子中,我的getServerSideProps在某些情况下没有解决,所以我修复了它,并确保getServerSideProps在每一种情况下都得到解决,现在它可以正常工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68771480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档