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

Vercel部署遇ENOENT错误:如何正确访问app目录文件与私有JSON

问题分析与解决方案

1. 路径拼写错误

你代码里读取JSON文件的路径写的是/app/json/afile.json,但实际目录是/app/jsons(少了一个s),这是导致ENOENT错误的直接原因之一,先修正这个拼写问题。

2. Vercel文件系统的只读限制

Vercel部署后,除了/tmp临时目录,其他目录都是只读状态。你用fs.writeFile写入public目录的操作必然失败,因为没有写入权限。如果需要临时写入文件,必须切换到/tmp路径,示例代码:

fs.writeFile('/tmp/a file', buffer)

注意:/tmp目录的文件会在函数执行结束后被清除,无法持久化存储。如果需要持久化数据,建议使用Vercel KV、Supabase这类专门的数据库服务,不要依赖本地文件。

3. 可靠的文件读取路径写法

在Vercel环境中,推荐用path.resolve()结合__dirname构建绝对路径,比process.cwd()更稳定,避免不同环境下的路径差异问题。读取JSON文件的示例代码:

const path = require('path');
await fs.readFile(path.resolve(__dirname, '../app/jsons/afile.json'), 'utf8');

__dirname代表当前脚本所在的目录,通过它向上/向下拼接路径,能确保精准定位到目标文件。

4. JSON文件的私有性确认

你的判断是对的:public目录下的资源会被Vercel当作静态资源,任何人都能通过URL直接访问,所以私有JSON文件绝对不能放在这里。放在app目录下是正确的做法,只要不暴露对应的访问路由,只有服务器端代码能读取该文件,保持了私有性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:07:08