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

Next.js部署Vercel时fs.writeFile报ENOENT错误的解决方法及原因

问题原因
  1. Vercel文件系统只读限制:Vercel部署后的运行环境中,项目源码目录(包括你的app/data路径)处于只读状态,不允许写入操作。本地环境你拥有完整文件系统权限所以能正常执行,但到Vercel上会因权限或目录不可写触发ENOENT错误(哪怕路径存在,也无法完成写入)。
  2. 路径匹配偏差:Vercel构建时的项目目录结构和本地存在差异,process.cwd()或__dirname指向的路径并非你预期的app/data所在位置,就算权限允许,也找不到目标文件/目录。
解决办法
  • 使用专门的存储服务:放弃写入项目本地文件的方案,改用Vercel官方提供的存储服务(比如Vercel KV、Vercel Blob),或者第三方数据库(如Supabase、PlanetScale)。这些服务专为动态数据存储设计,完全适配Vercel的无服务器函数环境。
  • 临时文件用/tmp目录:如果仅需临时存储文件(数据无需持久化或跨请求共享),可以使用Vercel提供的/tmp临时目录,该目录具备读写权限,修改代码如下:
    await fs.writeFile('/tmp/list.json', data)
    
    注意:/tmp目录的内容会在函数执行结束后被清理,且不同函数实例之间不共享数据。
  • 彻底放弃写入源码目录:Vercel的部署架构决定了源码目录是只读的,任何试图写入该目录的操作都会失败,不要尝试修改权限或路径绕过这个限制,这不符合平台运行规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:02:10