在IE11中运行我的angular 7应用程序时,出现以下错误:
SCRIPT1010: Expected identifier
vendor.js (73764, 26)
有问题的行是:
return function (...args /*, callback*/) {
我相信这是因为浏览器无法识别其余运算符。我已经用尽了互联网上的所有建议,但问题似乎仍然存在。 以下是我正在工作的环境:
Angular: 6.1.10
... animations, common, compiler, core, forms, http
... language-service, platform-browser, platform-browser-dynamic
... router
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.13.8
@angular-devkit/build-angular 0.13.8
@angular-devkit/build-optimizer 0.13.8
@angular-devkit/build-webpack 0.13.8
@angular-devkit/core 7.3.8
@angular-devkit/schematics 7.3.8
@angular/cli 7.3.8
@angular/compiler-cli 7.2.13
@ngtools/webpack 7.3.8
@schematics/angular 7.3.8
@schematics/update 0.13.8
rxjs 6.5.2
typescript 3.2.4
webpack 4.29.0
答案 0 :(得分:0)
参考this article,我们可以看到rest参数语法不支持IE浏览器。如果我们还使用箭头功能,则它也不支持IE浏览器,更多详细信息,请检查Arrow function expressions。
作为一种解决方法,我们可以babel将其余参数语法转换为ES5语法。
例如:
function sum(...theArgs) {
return theArgs.reduce((previous, current) => {
return previous + current;
});
}
console.log(sum(1, 2, 3));
// expected output: 6
console.log(sum(1, 2, 3, 4));
// expected output: 10
上面的代码将在IE11浏览器中显示“ SCRIPT1010:预期标识符”错误,使用babel翻译后,以下代码在IE11浏览器中可以很好地工作。
function sum() {
for (var _len = arguments.length, theArgs = new Array(_len), _key = 0; _key < _len; _key++) {
theArgs[_key] = arguments[_key];
}
return theArgs.reduce(function (previous, current) {
return previous + current;
});
}
console.log(sum(1, 2, 3));
// expected output: 6
console.log(sum(1, 2, 3, 4));
// expected output: 10