Vercel 不会渲染新创建的博客,但该博客正在数据库中创建,并且在本地主机上可见

问题描述 投票:0回答:1

所以我已经在 Vercel 上的 Neon Service + cloudinary 网站上部署了 nextjs + prisma + postgresql。

我已在此 vercel 项目的设置中添加了所有环境变量。其中一些是 NEXT_PUBLIC 的,我不知道这是否重要,但无论如何我都会提到它。

但是当我尝试在这个部署的网站上创建博客时,它正在数据库中创建,我什至可以在本地主机上看到这个博客,但这个博客不会出现在部署的网站上。

有什么交易?

基本上,博客只能创建 1 个特定的人。我添加了一个像“我是管理员”这样的按钮,当您单击它时,它会要求输入密码。我已经在代码中硬编码了这个密码,并且我告诉了这个人这个密码,所以他和我是唯一知道这个密码并可以在网站上创建博客的人。

我不想创建这些 JWT/NextAuth/Clerk 身份验证功能,因为创建博客计划无论如何都只能由一个特定的人访问。

有用户观看网站上的内容,并且只有一个人可以创建该内容。我希望您理解该网站背后的逻辑。

正如我已经提到的,当我从这个部署的网站创建一些博客时,该博客将被添加到数据库中。所以我猜这个 vercel 网站背后的功能是有效的。该博客在任何时候都无法显示在网站上。

创建帖子时控制台没有错误。

这是什么问题???

也许是因为建筑的原因?解决了我的这个问题后(错误:无法从 api/blogs/[blogId] 收集页面数据)我添加了:

"postinstall": "prisma generate && npm run build"

在package.json的脚本中。在 vercel 中,网站构建命令的设置是默认的 npm run build。我不知道也许这有原因...?

javascript reactjs next.js prisma vercel
1个回答
0
投票

您面临的问题可能与 Vercel 上的构建和部署设置有关,其中服务器端渲染 (SSR) 可能无法正确获取数据,或者缓存可能会导致问题。

以下是一些需要检查的事项:

重新验证或缓存问题:如果您使用 getStaticProps,博客可能不会出现,因为它们在构建期间被缓存。如果您使用此方法,请尝试添加重新验证密钥以从数据库中获取最新数据。或者,您可以切换到 getServerSideProps 以确保每次请求时都获取最新的数据。

构建时数据获取:在Next.js中,页面上的数据获取有时是在构建时完成的,这意味着如果博客是在构建后创建的,则除非您重新构建项目,否则它可能不会出现。检查您是否使用 getStaticProps 来获取博客。这可能会导致问题,因为您的数据不会在生产站点上动态更新。

Prisma 客户端缓存:Prisma 也可以缓存数据。您可以尝试在查询数据库时清除或禁用缓存。

环境变量:仔细检查 Vercel 仪表板中的环境变量(尤其是 PostgreSQL 连接字符串)是否设置正确。由于它在本地工作,因此在部署期间可能无法正确应用环境变量。

Cloudinary 集成:确保您的 Cloudinary 设置正确集成,并且没有资产被阻止或错误配置。

日志和错误:即使没有控制台错误,也请尝试在项目仪表板中查看 Vercel 的日志,看看在获取博客时服务器端逻辑或 API 路由是否存在错误。

环境变量更改后重建:如果您对环境变量进行了更改,请确保触发新的构建以反映这些更改。

© www.soinside.com 2019 - 2024. All rights reserved.