(0x800a138f) 将 BreezeJS 添加到 Durandal 项目后,IE8 中出现未处理的异常
(0x800a138f) Unhandled exception in IE8 after adding BreezeJS to Durandal project
我希望对 .NET 4.0 上的 Breeze/Durandal 2 有一些经验的人能够帮助我解决这个错误,因为我是这个组合的新手。
我一直在研究 Durandal 2/KO/Require SPA 项目,最近在我的 IIS7 上编译得很好 运行。我需要这个应用程序与 IE8 兼容,所以我导入了 shim 和 sham js 库:
<!-- 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 运行时错误:'route' 为空或不是对象
我认为这可能是与 JQuery 的兼容性问题,所以我在那里尝试了不同的版本。我已确保我的 DocType 设置为:
<!DOCTYPE html>
并且我有以下元标记:
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
但是我怀疑其中任何一个都会导致 IE8 和 Durandal 出现问题。有没有其他人遇到过与我类似的问题?我遇到这个错误是因为我没有在 MVC4 端配置某些东西吗?
如有任何建议,我们将不胜感激。
谢谢
深入研究Durandal后composition.js发现"tryActivate"函数中的skipActivation参数未定义,导致报错。我很确定这个问题是 Durandal 对 IE8 支持的结果,所以我继续并废弃了 IE8,现在我正在为 IE9 及更高版本开发。
这不是解决方法,但我已经受够了这个问题,我会继续......
我希望对 .NET 4.0 上的 Breeze/Durandal 2 有一些经验的人能够帮助我解决这个错误,因为我是这个组合的新手。
我一直在研究 Durandal 2/KO/Require SPA 项目,最近在我的 IIS7 上编译得很好 运行。我需要这个应用程序与 IE8 兼容,所以我导入了 shim 和 sham js 库:
<!-- 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 运行时错误:'route' 为空或不是对象
我认为这可能是与 JQuery 的兼容性问题,所以我在那里尝试了不同的版本。我已确保我的 DocType 设置为:
<!DOCTYPE html>
并且我有以下元标记:
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
但是我怀疑其中任何一个都会导致 IE8 和 Durandal 出现问题。有没有其他人遇到过与我类似的问题?我遇到这个错误是因为我没有在 MVC4 端配置某些东西吗?
如有任何建议,我们将不胜感激。
谢谢
深入研究Durandal后composition.js发现"tryActivate"函数中的skipActivation参数未定义,导致报错。我很确定这个问题是 Durandal 对 IE8 支持的结果,所以我继续并废弃了 IE8,现在我正在为 IE9 及更高版本开发。
这不是解决方法,但我已经受够了这个问题,我会继续......