出现该问题首先除了要检查的是JS语法是否有错误之外,极大的可能就是index.html的缓存带来的问题。
我们都知道现代脚手架构建的项目中,静态资源文件都会添加hash码来防止缓存,但是html是没有带hash码的,也就是说html是可能带来缓存问题的:当项目重新部署后,访问系统时浏览器可能还是上次访问的index.html,这就造成了这个html中加载的静态资源还是上次的(<Link>和<sciprt>标签中的资源),也就可能无法访问到(因为旧的静态资源已经被删除),在nginx中往往会有如下配置,找不到资源时就会返回index.html这个文件(这也Ngxin是防止找不到资源的一个兜底处理),一个JS文件返回的是html内容,这样浏览器解析的时候就会报错Uncaught SyntaxError: Unexpected token '<' (at,下面来看看如何解决:
- 前端
publicPath的配置调整
- 除了修改
publicPath的配置外,还有极大的可能需要修改Nginx的配置,来防止index.html的缓存
server {
# disable cache html
add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
try_files $uri /index.html;
...
}
配置完之后,仍然需要做一次浏览器清除缓存的处理,至此,问题解决。