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

部署Django项目至Vercel时持续出现找不到staticfiles_build输出目录的报错

部署Django项目至Vercel时持续出现找不到staticfiles_build输出目录的报错

我之前部署Django到Vercel时也碰到过一模一样的问题,折腾了好一阵才解决,给你几个实用的排查和解决步骤:

  • 先确认Vercel的构建命令是否包含收集静态文件的操作
    Django不会自动把静态文件收集到STATIC_ROOT指定的目录,必须手动执行collectstatic命令。你需要在Vercel项目的「Settings > Build & Development Settings」里,把Build Command改成类似这样:

    pip install -r requirements.txt && python manage.py collectstatic --noinput
    

    如果你的项目用了Poetry这类依赖管理工具,就对应调整成poetry install && poetry run python manage.py collectstatic --noinput,确保构建过程中一定会生成静态文件目录。

  • 检查BASE_DIR和STATIC_ROOT的路径是否正确
    你的STATIC_ROOT配置看起来没问题,但要先确认BASE_DIR的定义是正确的,标准的BASE_DIR应该是:

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    

    可以临时在settings里加一行print(BASE_DIR),本地运行一下看看路径是不是指向你的项目根目录,避免因为路径嵌套错误导致静态文件生成到了奇怪的地方。

  • 必须配置vercel.json指定输出目录和路由
    Vercel默认可能识别不到你自定义的静态文件目录,需要在项目根目录创建vercel.json文件,明确告诉它静态资源的位置和请求转发规则,示例配置如下:

    {
      "builds": [
        {
          "src": "你的项目名称/wsgi.py",
          "use": "@vercel/python",
          "config": { "maxLambdaSize": "15mb", "runtime": "python3.11" }
        },
        {
          "src": "staticfiles_build/static/**",
          "use": "@vercel/static"
        }
      ],
      "routes": [
        {
          "src": "/static/(.*)",
          "dest": "/staticfiles_build/static/$1"
        },
        {
          "src": "/(.*)",
          "dest": "你的项目名称/wsgi.py"
        }
      ]
    }
    

    记得把你的项目名称替换成你实际的Django项目文件夹名(就是包含wsgi.py的那个文件夹)。

  • 排查缓存和.gitignore的问题
    有时候Vercel的旧构建缓存会搞事情,你可以到项目的「Deployments」页面,找到最近的部署,点击「Redeploy」并勾选「Clear build cache」重新部署。另外,别把staticfiles_build目录加到.gitignore里吗?其实构建时会生成它,所以加了也没关系,但如果之前加了可以临时注释掉测试一下,排除路径被忽略的问题。

按照这几步走,应该就能解决找不到staticfiles_build目录的报错了,我当时就是靠调整构建命令和配置vercel.json搞定的。

备注:内容来源于stack exchange,提问作者Akarshan Ghosh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 09:44:32