AngularJS 1.5错误引导IBM Mobilefirst

AngularJS 1.5错误引导IBM Mobilefirst,angularjs,ibm-mobilefirst,Angularjs,Ibm Mobilefirst,我似乎在结合MFP混合(无cordova)应用程序和angular 1.5时遇到了问题。angular1.4.9的相同应用程序运行良好,但如果切换到angular1.5,则会出现以下错误: Error: [$injector:modulerr] Failed to instantiate module ng due to: TypeError: Cannot set property 'aHrefSanitizationWhitelist' of null at $$SanitizeUriPro

我似乎在结合MFP混合(无cordova)应用程序和angular 1.5时遇到了问题。angular1.4.9的相同应用程序运行良好,但如果切换到angular1.5,则会出现以下错误:

Error: [$injector:modulerr] Failed to instantiate module ng due to:
TypeError: Cannot set property 'aHrefSanitizationWhitelist' of null
at $$SanitizeUriProvider (http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:17272:35)
at new <anonymous> (http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/worklight/worklight.js:1033:23)
at Object.instantiate (http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:4621:14)
at provider (http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:4435:36)
at http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:367:32
at forEach (http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:337:20)
at Object.provider (http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:4425:9)
at ngModule (http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:2476:16)
at Object.invoke (http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:4606:19)
at runInvokeQueue (http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:4499:35)
http://errors.angularjs.org/1.5.0/$injector/modulerr?p0=ng&p1=TypeError%3A%…%2FHelloWorld%2Fandroid%2F1.0%2Fdefault%2Fvendor%2Fangular5.js%3A4499%3A35)
错误:[$injector:modulerr]未能实例化模块ng,原因是:
TypeError:无法将属性“AhrefSanitationWhiteList”设置为null
在$$SanitizeUriProvider(http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:17272:35)
在纽约(http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/worklight/worklight.js:1033:23)
在Object.instantiate(http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:4621:14)
在供应商处(http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:4435:36)
在http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:367:32
在弗雷赫(http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:337:20)
在Object.provider上(http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:4425:9)
在NGM模块(http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:2476:16)
在Object.invoke(http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:4606:19)
在Runequeue(http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/vendor/angular5.js:4499:35)
http://errors.angularjs.org/1.5.0/$injector/modulerr?p0=ng&p1=TypeError%3A%…%2HelloWorld%2Android%2F1.0%2Default%2Fvendor%2Angular5.js%3A4499%3A35)

有人知道它可能是什么吗?

我升级到angular 1.5.0时遇到了完全相同的问题。
问题在于我们在代码中使用的
Function.prototype.bind
的自定义实现,看起来这与angular中定义的实现有冲突

查看错误调用堆栈的第二行

at new <anonymous> (http://localhost:10080/Hybrid/apps/services/preview/HelloWorld/android/1.0/default/worklight/worklight.js:1033:23)

新版本)

在MFP 8.0 cordova插件上也可以看到这一点。

正如其他人所提到的,这可能是由Function.prototype.bind的polyfills造成的。特别是,它似乎是由那些没有正确处理将函数作为构造函数使用new调用的函数引起的。简单的实现可能总是返回绑定的对象,而不管调用如何,而期望的是新的操作符优先于绑定,并且返回新创建的对象

例如

标准调用按预期运行

myFunc(); // output 'I am the alternate'
通过new调用不符合预期(这是一个打破1.5的调用)

new myFunc();//还输出“我是替补”
预期的行为是,新调用将返回一个新对象,而不是绑定的对象


如果您需要Function.prototype.bind的polyfill,请确保它正确处理了此场景,如上的场景。

ngRoute模块不再是core angular.js文件的一部分。如果您继续使用$routeProvider,那么您现在需要在您的HTMLI中包含angular-route.js。在这个项目中使用ui路由器。那么,您可以共享类似的演示项目吗。@KennethVandenBerghe您使用的MobileFirst版本是什么?MobileFirst hybrid中的每个混合应用程序都是基于Cordova的。从阅读日志以及更改Angular版本时它可以工作的事实来看,在我看来,它与AngularJS的关系比MobileFirst更为密切。是worklight存在同样的问题,还是与Angular不兼容的另一段代码?如果是worklight,您如何解决该问题?这是一个内部库,我没有使用worklight。我猜一些worklight库有一个自定义的
Function.prototype.bind
实现,我建议在包含worklight js文件之后再包含angular.js文件,这样angular就会覆盖worklight 1,而不是反过来。你找到解决方案了吗?你可以找到MFP 8.0 Cordova插件的解决方案吗
myFunc(); // output 'I am the alternate'
new myFunc(); // also outputs 'I am the alternate'</jscodeblock>