Django-leaflet尝试加载不存在的static/src目录下JS文件求助
以下是几个排查和解决的方向:
检查Django-leaflet的DEBUG配置
Django-leaflet默认加载打包压缩后的Leaflet核心文件,如果你在项目settings.py中设置了LEAFLET_CONFIG的DEBUG为True,或者指定了非压缩版的资源路径,可能会触发加载源码目录的文件。检查你的配置:# settings.py 中是否有类似配置 LEAFLET_CONFIG = { 'DEBUG': True, # 该配置会导致加载源码文件 # 或者手动指定了错误的JS路径 'JS_URL': '/static/src/leaflet.js' }把
DEBUG改为False,或者移除错误的JS_URL配置,让插件使用默认的打包文件。查看
{% leaflet_js %}渲染后的实际HTML
打开极简页面的开发者工具(F12),查看页面渲染后的<script>标签,正常情况下{% leaflet_js %}应该生成指向打包文件的路径:<script src="/static/leaflet/leaflet.js"></script>如果渲染后的路径指向
static/src/...,说明插件的静态文件安装或配置有问题。运行python manage.py collectstatic,确保Leaflet的静态文件被正确收集到项目的静态目录中,正确的结构应该是static/leaflet/下有leaflet.js、leaflet.css等文件,而非src目录。排查模板中的自定义引入
检查项目中所有模板(包括base模板),是否有手动引入static/src/目录下Leaflet文件的代码,比如:<script src="{% static 'src/core/Util.js' %}"></script>这类手动引入会覆盖或补充插件的默认加载逻辑,导致请求不存在的文件。移除所有这类手动引入,只保留
{% leaflet_js %}标签来加载核心文件。清理浏览器缓存或使用无痕模式
浏览器可能缓存了旧的JS代码,其中包含请求src目录的逻辑。尝试强制刷新页面(Ctrl+Shift+R),或者用无痕模式打开页面,确认请求是否消失。排查第三方插件的错误引用
如果你在项目中使用了Leaflet第三方插件,部分插件可能错误地引用了Leaflet源码目录下的文件,而非依赖打包后的leaflet.js。检查所有插件的JS代码,看是否有类似import '../src/core/...'或直接引用src路径的代码,替换为正确的依赖方式。
内容的提问来源于stack exchange,提问作者kysevenle

