我在VS2013中使用Angular JS项目(角度版本v1.4.4)创建MVC5。我正在编码,一切都很好,然后突然我开始在启动时收到此错误:
{53}中第39行第39行的JavaScript严重错误\ n \ nSCRIPT1010:预期标识符
我只在IE10上收到此错误,它在Chrome上运行良好。
我的引用位于布局文件中,如下所示:
<link href="~/Content/bootstrap.css" rel="stylesheet" />
<link href="~/Content/Site.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/angular.js"></script>
<script src="~/Scripts/bootstrap.js"></script>
<script src="~/Scripts/angular-route.js"></script>
HTML页面包含对App.js文件的引用。我可以发布一些代码,但它似乎甚至没有打到App.JS文件。有人遇到过这个问题,或者对于我应该从哪里开始寻找问题有任何建议?据我所知,我将我的代码恢复到IE10工作的程度,但它仍然无法运行。
这是angular.js文件中包含错误行号的特定函数。具体的行是在&#39; catch&#39;中的返回声明。功能:
getPromise: function() {
if (!this.defer) {
this.defer = $q.defer();
}
return this.defer.promise;
},
then: function(f1,f2) {
return this.getPromise().then(f1,f2);
},
'catch': function(f1) {
return this.getPromise().catch(f1);
},
'finally': function(f1) {
return this.getPromise().finally(f1);
}
非常感谢任何帮助。
答案 0 :(得分:2)
根据changelog,最近在v1.4.4
中专门介绍了这一点:
$ animateCss :确保skipBlocking避免先发制人的转换延迟样式
更多地扩展一些上下文引发错误的行:
var $CoreAnimateCssProvider = function() {
this.$get = ['$$rAF', '$q', function($$rAF, $q) {
var RAFPromise = function() {};
RAFPromise.prototype = {
done: function(cancel) {
this.defer && this.defer[cancel === true ? 'reject' : 'resolve']();
},
end: function() {
this.done();
},
cancel: function() {
this.done(true);
},
getPromise: function() {
if (!this.defer) {
this.defer = $q.defer();
}
return this.defer.promise;
},
then: function(f1,f2) {
return this.getPromise().then(f1,f2);
},
'catch': function(f1) {
return this.getPromise().catch(f1);
},
'finally': function(f1) {
return this.getPromise().finally(f1);
}
};
//... more code
此$CoreAnimateCssProvider
未包含在1.4.3
中,因此它绝对是新的。
我的建议是,您现在尝试使用版本1.4.3
,直到修复此错误。
答案 1 :(得分:0)
我在IE 11.0.9600中遇到了类似的问题。我试过1.4.3并且angular.min.js刚刚抛出一个新错误:
SCRIPT5007: Object expected
File: angular.min.js, Line: 7, Column: 238.
还尝试了1.6.1,它在另一个&#34; .catch&#34;在js。
然而,这个错误也可能是由于文件类型被搞砸而IE试图以旧模式解析事物。要修复,请添加到您的web.config文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=10" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
或者,在主布局页面中添加:
<meta http-equiv="X-UA-Compatible" content="IE=11" />
并检查你的doctype声明很简单:
<!doctype html>
另外,在IE浏览器中使用angularjs还有其他一些问题(即使是最新的浏览器),这些问题归结为使用: