(IE 兼容或 XP 系统兼容)低版本浏览器报错 Uncaught SyntaxError: Unexpected token ...

8,051 阅读2分钟

一、问题描述

因为项目要在 XP 系统上运行,而 XP 系统可以安装的最新版本的谷歌浏览器是 49 版本,而火狐可以安装最新的是 52 版本。项目在这两个版本运行均报错,而在高版本的浏览器都可以正常运行。

Chrome 49 版本报错信息如下:(Uncaught SyntaxError: Unexpected token ...)

FireFox 52版本报错信息如下:(SyntaxError: invalid property id

二、问题解决过程

1、尝试通过安装babel-polyfill解决

百度搜索 Uncaught SyntaxError: Unexpected token ... 的报错原因,得到的信息是 babel 编译默认不编译 async/await,没有转化为 ES5,所以低版本浏览器不兼容无法正常解析。

根据提示,尝试安装插件 babel-polyfill,修改配置信息:

npm install babel-polyfill --save

main.js按以下方式引入,在代码的最顶端引入

require('babel-polyfill');

import 'babel-polyfill';

但是经运行测试还是报错,不能解决。所以插件babel-polyfill不能解决我的这个项目的兼容问题,应该是有其它的兼容问题,需要继续定位解决。

2、通过删除不兼容的插件或者降低版本来解决

基础的 vue 项目是可以在 Chrome 49 版本和在 Firefox 52 版本正常运行的,所以怀疑是这个项目引用了不兼容的插件,这个时候得使用 排除法 了,通过报错信息提示,去到对应的文件不断删除排除对比,最终定位到只要删除了 fuse.js 的引用项目就可以正常运行,而删除 fuse.js 的引用通过测试暂时未发现有其它的问题出现,所以,这个兼容问题算是暂时得以解决。

排除法是比较常用的查找错误的方法了,当不能马上定位到问题出在哪里的时候,不妨试试排除法,不断删删删,也许就找出错误来了。

总结:兼容基本都是语法问题,可能是部分插件不适配,降低版本或者干脆不用这个插件可能就行了

就这。