Laravel使用@extends继承布局后导航栏JS加载失败(404错误)求助
解决Laravel中模板继承页面JS加载404的问题
嘿,我来帮你搞定这个JS加载失败的问题!从你描述的情况——首页能正常加载JS,但通过@extends('admin.layout.admin')继承的页面却报404——来看,核心问题是你用了相对路径加载JS文件,当访问/admin/product这类子路由页面时,浏览器会错误地把JS路径解析成/admin/product/js/jquery-3.2.1.min.js,自然找不到位于public/js目录下的文件。
下面是具体的解决步骤:
1. 改用Laravel的asset()辅助函数生成绝对路径
把你布局文件中加载JS的代码从相对路径改成绝对路径:
<!-- 原来的错误写法 --> <script src="js/jquery-3.2.1.min.js"></script> <!-- 改成下面的写法 --> <script src="{{ asset('js/jquery-3.2.1.min.js') }}"></script>
asset()函数会根据你.env文件里的APP_URL生成完整的绝对URL,比如http://localhost:8000/js/jquery-3.2.1.min.js,不管当前页面在哪个路由层级,都能精准指向public/js目录下的文件。
2. 确认文件位置与文件名
检查你的项目目录,确保jquery-3.2.1.min.js确实放在public/js/目录下,并且文件名完全匹配(注意大小写,Linux服务器环境下文件名大小写是敏感的)。
3. 清理缓存(可选,生产环境建议执行)
如果是在生产环境部署的项目,可能存在缓存导致路径解析异常,运行以下命令清理缓存:
php artisan config:cache php artisan route:cache
从你提供的截图也能看出来,导航栏的JS请求路径是基于当前子页面URL拼接的,这完全符合相对路径出错的特征,按照上面的步骤修改后应该就能解决问题啦!
内容的提问来源于stack exchange,提问作者Piermauro Nesi
相关产品推荐
相关产品推荐

