为什么Wagtail项目中collectstatic会恢复我已删除的文件?
根因说明
你销毁全新Droplet部署还复现问题,说明和服务器残留无关,问题出在你的代码仓库内容本身:报错是Django静态文件后处理阶段,解析其他留存的CSS、JS、模板文件时,检测到了对oldcodingprojects/peakjob/css/font-awesome.min.css的路径引用,尝试匹配对应文件生成哈希化路径时找不到资源触发报错,并不是旧目录被主动恢复。
排查&解决方案
- 首先检查项目
settings.py配置:- 确认
INSTALLED_APPS列表中是否还有已删除的peakjob相关应用条目,存在则直接移除 - 检查
STATICFILES_DIRS配置,是否有指向peakjob或oldcodingprojects目录的路径,删除相关配置项
- 确认
- 全局搜索项目全目录下的
oldcodingprojects/peakjob字符串,清除所有静态文件、模板文件中残留的对该路径的引用,可以直接用命令行快速检索:grep -r "oldcodingprojects/peakjob" 你的项目根目录路径 - 如果你使用了Sass、Less等CSS预处理器,先本地重新编译所有静态资源,确认编译后的产物没有旧路径引用再提交到代码仓库
- 运行collectstatic时加上 verbose 参数输出详细收集日志,直接定位异常路径的来源:
python manage.py collectstatic -v 3 - 检查虚拟环境中安装的第三方包,排查是否有依赖包自带了对应路径的静态资源,检索命令如下:
grep -r "oldcodingprojects/peakjob" 你的虚拟环境路径/lib/python3.8/site-packages/
临时规避方案
如果暂时找不到引用来源,可以先在settings.py中添加忽略规则,跳过该路径的后处理逻辑:
STATICFILES_IGNORE_PATTERNS = [ "oldcodingprojects/peakjob/*", ]
内容的提问来源于stack exchange,提问作者Meagen Voss
相关产品推荐
相关产品推荐

