NextJS应用程序在本地构建良好,但在部署到Vercel时失败(FetchError)

mefy6pfw  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(284)

对web开发来说相当新,我第一次尝试构建全栈。
我用Next作为前端,Strapi作为后端,构建了一个简单的博客。应用程序在本地运行得很好,但我在部署时卡住了。我想这是后端的某种连接问题(后端仍在本地运行),或者我完全错过了前端的某些东西。是不是我需要先让Strapi在线,然后在我的获取中使用该域名?
Vercel在构建期间抛出此错误:

FetchError: request to http://localhost:1337/api/places?populate=%2A failed, reason: connect ECONNREFUSED 127.0.0.1:1337
at ClientRequest.

我就是这样从斯崔皮那里得到数据的

export async function getStaticProps() {
  // const postRes = await axios.get("http://localhost:1337/api/articles?populate=*");
  const reviewsRes = await fetchAPI("/articles", { populate: ["image", "place"] });

  return {
    // props: { reviews: postRes.data.data },
    props: { reviews: reviewsRes.data },
  };
}

我也用这条线把图像和数据

backgroundImage: `url(${process.env.NEXT_PUBLIC_STRAPI_API_URL}${place.attributes.image.data.attributes.url})`,

我还尝试在env/config中将localhost更改为127.0.0.1:1337

vmdwslir

vmdwslir1#

实际上,您已经在下面这行中回答了您的问题:
是不是我需要先让Strapi在线可用,然后在我的获取中使用该域?
是的!你必须首先部署Strapi后端,并在你部署的NextJS前端中使用域/URL。
Strapi展开文件:https://docs.strapi.io/developer-docs/latest/setup-deployment-guides/deployment.html
您对backgroundImage url所做的就是您需要对数据获取url所做的。
使用NEXT_PUBLIC_STRAPI_API_URL env变量,这样就不必在部署之前更改代码。
在本地,您可以将.env文件放在NextJS根文件夹中,如下所示

NEXT_PUBLIC_STRAPI_API_URL=http://localhost:1337/api

然后,将NextJS应用程序部署到Vercel后,必须将NEXT_PUBLIC_STRAPI_API_URL变量设置为项目设置。
在Vercel中设置env变量:https://vercel.com/docs/concepts/projects/environment-variables
欢迎来到网络开发世界!希望它能有所帮助!

相关问题