Next.js API部署至Vercel后无响应,提示文件不存在错误
解决Next.js部署Vercel后API无法读取posts.json的问题
核心原因
Vercel部署后,Serverless函数的执行环境工作目录和本地开发时存在差异,直接使用相对路径./posts.json无法正确定位到目标文件。
解决方案
1. 用绝对路径定位文件
在API路由代码里,通过process.cwd()获取项目根目录的绝对路径,再拼接出posts.json的完整路径,示例代码如下:
import fs from 'fs'; import path from 'path'; export default function handler(req, res) { // 拼接posts.json的绝对路径 const filePath = path.join(process.cwd(), 'posts.json'); // 读取并解析文件内容 const fileContent = fs.readFileSync(filePath, 'utf8'); const posts = JSON.parse(fileContent); // 后续CRUD逻辑处理 res.status(200).json(posts); }
2. 确保文件被正常部署
- 检查项目根目录的
.gitignore文件,确认posts.json没有被加入忽略列表,否则Vercel部署时不会同步该文件到服务器。 - 如果
posts.json是构建时动态生成的,要确保构建流程能将文件生成到项目根目录(或你指定的绝对路径对应位置)。
3. 替代方案:改用数据库存储(可选)
Vercel的Serverless函数是无状态的,每次请求可能在不同实例上运行,直接修改本地JSON文件的内容无法持久化。如果需要稳定的CRUD数据持久化,建议替换为Vercel KV、Supabase等轻量数据库服务。
内容的提问来源于stack exchange,提问作者daljeet singh
相关产品推荐
相关产品推荐

