对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
1条答案
按热度按时间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根文件夹中,如下所示
然后,将NextJS应用程序部署到Vercel后,必须将
NEXT_PUBLIC_STRAPI_API_URL
变量设置为项目设置。在Vercel中设置env变量:https://vercel.com/docs/concepts/projects/environment-variables
欢迎来到网络开发世界!希望它能有所帮助!