(0x800a138f)将BreezeJS添加到Durandal项目后,IE8中出现未处理的异常



我希望有一些在.NET 4.0上的Breeze/Durandal 2方面有经验的人能够帮助我解决这个错误,因为我对这个组合还很陌生。

我一直在做一个Durandal 2/KO/Request SPA项目,该项目最近编译得很好,并在我的IIS7上运行。我需要这个应用程序与IE8兼容,所以我导入了shim和sham-js-libs,如下所示:

<!-- ECMAScript 5 compatibility shims for IE8 -->
<!--[if lt IE 9]>
<script src="lib/ie8/html5shiv.min.js"></script>
<script src="lib/ie8/respond.js"></script>
<script src="lib/ie8/es5-shim.min.js"></script>
<script src="lib/ie8/es5-sham.min.js"></script>
<![endif]-->
<script src="lib/jquery/jquery-1.9.1.min.js"></script>
<script src="lib/knockout/knockout-3.1.0.js"></script>
<script src="/Scripts/q.min.js"></script>
<script src="/Scripts/breeze.debug.js"></script>
<script src="lib/bootstrap/js/bootstrap.js"></script>

我还需要能够访问数据库中的数据,所以我尝试将BreezeJS添加到混合中。根据Breeze的文档,为了实现这一点,我不得不使用空模板将VS中的项目重新制作为ASP.NET MVC4项目。之后,我使用NuGet:导入了Breeze文件

Install-Package Breeze.WebApi

然后,我将预先存在的视图、控制器、库、css等添加到新创建的项目中。现在,当我使用IE8进行编译时,我会得到以下错误。此错误不会在Firefox或Chrome上显示:

Unhandled exception at line 125, column 13 in 
http://localhost:64185/lib/durandal/js/composition.js
(Edited for readability)
SourceMap D:localdevTestMVC4TestMVC4libie8es5-shim.map read failed: 
Could not find file 'D:localdevTestMVC4TestMVC4libie8es5-shim.map'.
SourceMap D:localdevTestMVC4TestMVC4libie8es5-sham.map read failed: 
Could not find file 'D:localdevTestMVC4TestMVC4libie8es5-sham.map'.
Unhandled exception at line 125, column 13 in http://localhost:64185/lib/durandal/js/composition.js

0x800a138f-Microsoft JScript运行时错误:"route"为null或不是对象

我认为这可能是JQuery的兼容性问题,所以我尝试了不同的版本。我已经确保我的DocType设置为:

<!DOCTYPE html>

我有以下元标签:

<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />

然而,我怀疑这两者中的任何一个都会引起IE8和杜兰达尔的问题。有没有其他人经历过和我类似的问题?我遇到这个错误是因为我没有在MVC4端配置什么吗?

如有任何建议,我们将不胜感激。

谢谢

在进一步挖掘Durandal composition.js后,我发现"tryActivate"函数中的skipActivation参数未定义,这导致了错误。我很确定这个问题是杜兰达尔支持IE8的结果,所以我放弃了IE8,现在我正在为IE9和更高版本开发。

这不是一个解决办法,但我已经受够了,我会继续前进。。。

最新更新