bug相关背景:应业务需求,现需要将 jsp文件老项目,运用国际化,经过讨论选用di18n-translate。但是di18n-translate通过npm下载后拿到的di18n.js在现代浏览器运行正常,ie8 及以下无法运行。
- SCRIPT1028: 缺少标识符、字符串或数字
这个报错一看,很熟悉吧。很多情况下是因为在旧版ie下json最后一项是不允许有逗号的,那么找到对应报错位置,去掉对象末尾的 “ , ”即可。但是,我们找到报错的行列,内容为如下:
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
可以发现,并没有常规的多余逗号或其他,但是 default 作为关键字被命名给对象属性,这里 ie 下不能正常识别。我们可以利用对象另一种方法进行修改这个问题,只需改为如下:
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
再运行会报错如下:
-
SCRIPT1010: 缺少标识符
找到发现还是关键字default的原因
文中另两处一起修改:
_translate2