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

时间:2015-04-22 02:19:42

标签: asp.net-mvc-4 internet-explorer-8 durandal-2.0 breeze-sharp

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

我一直致力于Durandal 2 / KO / Require 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:\localdev\TestMVC4\TestMVC4\lib\ie8\es5-shim.map read failed: 
Could not find file 'D:\localdev\TestMVC4\TestMVC4\lib\ie8\es5-shim.map'.
SourceMap D:\localdev\TestMVC4\TestMVC4\lib\ie8\es5-sham.map read failed: 
Could not find file 'D:\localdev\TestMVC4\TestMVC4\lib\ie8\es5-sham.map'.
Unhandled exception at line 125, column 13 in http://localhost:64185/lib/durandal/js/composition.js

0x800a138f - Microsoft JScript运行时错误:&#39; route&#39;是null或不是对象

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

<!DOCTYPE html>

我有以下元标记:

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

但我怀疑其中任何一个都会导致IE8和Durandal出现问题。有没有其他人遇到类似的问题?我是否遇到此错误,因为我还没有在MVC4端配置某些内容?

非常感谢任何建议。

谢谢

1 个答案:

答案 0 :(得分:0)

在进一步挖掘Durandal composition.js后,我发现“tryActivate”函数中的skipActivation参数未定义,导致错误。我很确定这个问题是由Durandal提供的IE8支持的结果,所以我继续废弃IE8,我现在正在开发IE9及以上版本。

这不是一个解决办法,但我已经有了足够的麻烦,我将继续......