我希望有一些在.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和更高版本开发。
这不是一个解决办法,但我已经受够了,我会继续前进。。。