NextJS点击Logo跳转首页时JS未加载问题求助
问题根因
跳转Logo使用原生<a>标签触发了浏览器硬导航,而非Next.js客户端路由跳转。
首屏加载时Next.js会基于配置的根路径正确解析所有静态资源地址,因此JS可以正常加载;点击原生a标签跳转时,浏览器会直接按当前页面URL的相对路径拼接静态资源地址,一旦项目存在嵌套路由、自定义basePath/assetPrefix、子路径部署的情况,就会出现JS资源路径解析错误返回404,最终导致页面JS完全不执行。
修复方案
- 站内跳转统一使用Next.js内置的
Link组件替代原生a标签,组件会自动处理客户端路由跳转,不会触发整页刷新,从根源上避免硬导航带来的资源路径错乱问题。
正确实现代码参考:
注意:Next.js 13+ App Router模式下// 首先在文件顶部引入Link组件 import Link from 'next/link' // Logo部分的跳转实现 <Link href="/"> <img src="/your-logo-path.png" alt="企业Logo" /> </Link>Link组件用法完全一致,不需要额外包裹a标签。 - 核对
next.config.js配置:如果项目不是部署在域名根路径,要确保basePath和assetPrefix两个配置项的值和实际部署子路径完全一致,两个配置值要保持统一,不要漏写路径前后的斜杠。根路径部署的项目直接删除这两个配置项即可,不要留空或者填错值。 - 统一路径写法:所有内部跳转路径、静态资源引用路径统一使用以
/开头的根绝对路径,不要写./、../开头的相对路径,避免嵌套路由下浏览器解析路径出错。
校验标准
修改完成后点击Logo跳转首页,打开浏览器开发者工具的网络面板:
- 看不到整页document重载请求
- 所有JS资源状态码都是200,无404报错
- 页面所有交互功能正常
即为修复完成。
内容的提问来源于stack exchange,提问作者shivam randeri
相关产品推荐
相关产品推荐

