在AJV代码中发现的扩展算子上的IE 11“期望标识符”错误

问题描述 投票:0回答:1

在我的Angular 6应用中,我在IE 11中收到控制台错误,显示为“ Script1010:“预期标识符”。常绿浏览器没有问题。

错误出现在第一个“。”在散布运算符函数中,在捆绑的js文件中标识为:

function(e,t,n){"use strict";function 1(...e){if(e.length>1)
{e[0]=e[0].slice(0,-1);const t=e.length-1;for(let n=1;n<t;++n)e[n]=e[n].slice(1,-1);return e[t]=e[t].slice(1),e.join("")}

在此代码行附近搜​​索关键字,我发现它来自ajv.min.js文件,特别是在文件的这段代码中:

44: [function(e, r, t) {
        var a;
        a = this,
            function(e) {
                "use strict";

                function C() {
                    for (var e = arguments.length, r = Array(e), t = 0; t < e; t++) r[t] = arguments[t];
                    if (1 < r.length) {
                        r[0] = r[0].slice(0, -1);
                        for (var a = r.length - 1, s = 1; s < a; ++s) r[s] = r[s].slice(1, -1);
                        return r[a] = r[a].slice(1), r.join("")
                    }
                    return r[0]
                }

显然,未将传播运算符转换为IE11可以消化的内容,并且浏览器在(... e)函数参数的第一段出现了“预期标识符”错误。

关于解决方法或特定的polyfill有任何建议吗?

internet-explorer-11 ajv
1个回答
0
投票

IE浏览器不支持Spread syntaxRest parameter,要获得相同的结果,可以参考以下方法:

方法1:使用JavaScript方法(例如:foreach或数组方法)遍历参数或数组项,而不使用Spread语法或Rest参数。更多详细信息,请检查以下链接:

Spread Operator equivalent in IE - Javascript

ES6 spread syntax IE not supported

Alternatives of spread syntax

方法2:使用@babel/polyfillbabel-plugin-transform-object-rest-spread填充。尝试使用以下命令来安装polyfill:

npm install --save @ babel / polyfill

npm install --save-dev babel-plugin-transform-object-rest-spread

此外,由于IE浏览器不支持ES 6语法,请检查您的polyfills.ts文件,并取消注释IE浏览器的相关软件包。

/** IE9, IE10 and IE11 requires all of the following polyfills. **/
 import 'core-js/es6/symbol';
 import 'core-js/es6/object';
 import 'core-js/es6/function';
 import 'core-js/es6/parse-int';
 import 'core-js/es6/parse-float';
 import 'core-js/es6/number';
 import 'core-js/es6/math';
 import 'core-js/es6/string';
 import 'core-js/es6/date';
 import 'core-js/es6/array';
 import 'core-js/es6/regexp';
 import 'core-js/es6/map';
 import 'core-js/es6/weak-map';
 import 'core-js/es6/set';

/** IE10 and IE11 requires the following for NgClass support on SVG elements */
// import 'classlist.js';  // Run `npm install --save classlist.js`.

/** IE10 and IE11 requires the following for the Reflect API. */
 import 'core-js/es6/reflect';


/** Evergreen browsers require these. **/
// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
import 'core-js/es7/reflect';
© www.soinside.com 2019 - 2024. All rights reserved.