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

在Vercel部署NextJS时出现ENOENT创建目录错误求助

问题:Next.js部署到Vercel后创建目录失败(已用recursive参数仍报ENOENT)

本地localhost运行正常的代码如下:

import fs from 'fs'
import path from 'path'

export default function createUserDir (tokenSignature: string) { 
    const pathToMakeDir = path.join(process.cwd(), 'notes', tokenSignature);
    fs.mkdirSync(pathToMakeDir, { recursive: true });    
}

部署到Vercel(Next.js 13.0.3,Node 16.x)后出现如下错误:

2022-11-15T19:32:34.119Z    145c46ab-416c-4f5c-b881-80b9c623a5ac    ERROR   Error: ENOENT: no such file or directory, mkdir '/var/task/notes/jFlqLkrmIPOEnaiExiUN3ohlmJlH_GN2OD36fiQ9a2A'
    at Object.mkdirSync (node:fs:1349:3)
    at createUserDir (/var/task/.next/server/chunks/133.js:252:45)
    at getServerSideProps (/var/task/.next/server/pages/index.js:93:76)
    at Object.renderToHTML (/var/task/node_modules/next/dist/server/render.js:506:26)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async doRender (/var/task/node_modules/next/dist/server/base-server.js:701:34)
    at async cacheEntry.responseCache.get.isManualRevalidate.isManualRevalidate (/var/task/node_modules/next/dist/server/base-server.js:806:28)
    at async /var/task/node_modules/next/dist/server/response-cache/index.js:80:36 {
  errno: -2,
  syscall: 'mkdir',
  path: '/var/task/notes/jFlqLkrmIPOEnaiExiUN3ohlmJlH_GN2OD36fiQ9a2A',
  page: '/'
}
RequestId: 145c46ab-416c-4f5c-b881-80b9c623a5ac Error: Runtime exited with error: exit status 1
Runtime.ExitError

解决方案

  • 核心原因:Vercel的/var/task目录是只读的,无法写入文件或创建目录;本地环境中process.cwd()指向有写入权限的项目目录,因此本地运行正常。
  • 临时存储修改:改用Vercel允许写入的临时目录/tmp,调整代码路径:
    import fs from 'fs'
    import path from 'path'
    
    export default function createUserDir (tokenSignature: string) { 
        const pathToMakeDir = path.join('/tmp', 'notes', tokenSignature);
        fs.mkdirSync(pathToMakeDir, { recursive: true });    
    }
    
    注意:/tmp目录的内容会在函数执行结束后被自动清理,仅适合临时存储场景。
  • 持久化存储方案:如果需要长期保存文件,应使用Vercel官方Blob Storage或第三方云存储服务(如AWS S3),Vercel的Serverless函数环境不提供持久化本地存储能力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:25:39