You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js POST API本地正常Vercel部署失效求助(Prisma+SQLite)

问题根因

你遇到的问题本质是Vercel无服务器运行环境的特性限制和SQLite的存储模式不匹配:

  • Vercel的Serverless函数运行环境是临时、只读的,仅/tmp目录拥有临时写入权限,所有写入的数据会在函数执行结束后立即销毁,不会持久留存。
  • 你的首页用getStaticProps获取数据,该逻辑是在项目构建阶段执行的,构建时SQLite文件存在,所以可以正常读取数据生成静态页面,部署后首页访问正常。
  • 插入数据的POST请求会触发Serverless函数运行,此时需要写入SQLite文件,而你配置的SQLite文件路径在不可写的node_modules目录下,直接触发Prisma初始化错误,接口返回500状态码且没有返回合法JSON结构,前端解析response.json()失败就会抛出Unexpected end of JSON input报错。

解决方案

推荐方案:更换数据库存储

放弃SQLite,改用支持网络访问的托管关系型数据库,这是长期稳定使用的最优选择:

  • 可选的免费托管数据库包括Supabase(PostgreSQL)、PlanetScale(MySQL)、Neon(Serverless PostgreSQL)等,个人使用的免费额度完全足够。
  • 只需要修改Prisma配置中的数据库连接字符串为对应托管数据库的连接地址,重新部署即可正常运行读写逻辑。

临时方案(不推荐用于生产)

如果只是测试用途坚持要用SQLite,可以修改Prisma配置,将SQLite文件路径指定到/tmp目录,但该方案写入的所有数据都会在每次函数执行结束后丢失,且并发请求时会出现文件读写冲突,数据可靠性完全无法保障。

内容的提问来源于stack exchange,提问作者threelyons0405

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:15:04