Vercel部署Node.js+Express后端:动态创建文件夹失败求助
解决Vercel部署Node.js/Express时动态创建文件夹失效问题
问题本质
Vercel的Serverless函数运行环境中,process.cwd()指向的/var/task目录是只读的,不允许创建新文件或文件夹,这就是本地运行正常但线上报错ENOENT: no such file or directory的核心原因——代码试图在只读目录下创建tmp文件夹,自然无法执行。
解决方案
Vercel为Serverless函数提供了专属的可写临时目录,通过环境变量process.env.TMPDIR获取,这是运行时唯一允许写入的临时路径。修改代码如下:
const fse = require('fs-extra'); const path = require('path'); // 替换原路径为Vercel提供的可写临时目录 const targetDir = path.join(process.env.TMPDIR, folderName); fse.mkdirsSync(targetDir);
注意事项
- 该临时目录是会话级的:函数执行完成后,目录内的文件可能会被Vercel自动清理,不能用于持久化存储。
- 本地开发兼容性:
process.env.TMPDIR在本地环境(如macOS、Linux)也会自动指向系统临时目录,无需额外修改即可兼容本地测试。 - 若需持久化文件,建议使用云存储服务(如Vercel Blob、AWS S3等)。
内容的提问来源于stack exchange,提问作者Hunter
相关产品推荐
相关产品推荐

