2016-03-03 11 views
14

Ich habe Probleme beim Kombinieren eines MFP-Hybrid (keine Cordova) -Anwendung und angular 1.5. Die gleiche Anwendung mit Winkel 1.4.9 funktioniert gut, aber wenn ich zu angular1.5 wechseln dann bekomme ich diese Fehlermeldung:AngularJS 1.5 Fehler Bootstrap IBM Mobilefirst

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) 

jemand eine Ahnung, was es sein könnte?

+0

Das ngRoute-Modul ist nicht mehr Teil der angular.js-Kerndatei. Wenn Sie weiterhin $ routeProvider verwenden, müssen Sie nun angular-route.js in Ihren HTML-Code einfügen. –

+0

Ich benutze den UI-Router in diesem Projekt. –

+0

Nun, können Sie ähnliche Demo-Projekt teilen. –

Antwort

3

Ich hatte genau das gleiche Problem, wenn ich auf eckige 1.5.0 aktualisiert.
Das Problem stellte sich heraus, mit einer benutzerdefinierten Implementierung von Function.prototype.bind zu sein, die wir in unserem Code hatten, sieht es so aus, dass dies mit dem in eckigen definiert interferiert.

Nehmen Sie an der zweiten Linie auf Fehler Aufrufliste

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

Ich denke worklight.js eine Implementierung von prototype.bind aufweisen kann, die mit dem in Winkel unvereinbar ist (siehe https://code.angularjs.org/1.5.0/docs/api/ng/function/angular.bind)

+0

Hatten Sie das gleiche Problem mit worklight oder war es ein anderes Stück Code, das mit eckig nicht kompatibel war? Wenn es Arbeitsscheinwerfer war, was haben Sie getan, um das Problem zu lösen? –

+0

Dies war mit einer internen Bibliothek, ich habe keine Arbeitsscheinwerfer verwendet. Ich nehme an, einige Worklight-Bibliothek hat eine benutzerdefinierte Implementierung von 'Function.prototype.bind', ich schlage vor, Sie fügen Sie die angular.js-Datei, nachdem Sie die Arbeitslicht JS-Dateien enthalten, so dass angular überschreibt die Arbeitsbeleuchtung eine anstelle der anderen um. – pauloya

0

Auch diese sehen auf dem MFP 8.0 Cordova-Plugin.

+0

haben Sie eine Lösung gefunden – iqueqiorio

+0

Sie können die Problemumgehung für MFP 8.0 Cordova-Plugin finden [hier] (http://stackoverflow.com/questions/38902169/mobilefirst-v8-and-bootstrap-angular-js-v1-5-3- Error) –

0

Wie andere erwähnt haben, kann dies durch Polyfills für Function.prototype.bind verursacht werden. Insbesondere scheint es durch diejenigen verursacht zu werden, die die Funktion nicht korrekt als Konstruktor mit new behandeln. Einfache Implementierungen können das gebundene Objekt immer unabhängig vom Aufruf zurückgeben, während erwartet wird, dass der neue Operator Vorrang vor der Bindung hat und stattdessen das neu erstellte Objekt zurückgegeben wird.

z.

// create an object to bind to 
var alt = { 
    message: 'I am the alternate' 
}; 

// our function 
function myFunc() { 
    console.log(this.message); 
}; 

// bind our alternate object to this for myFunc 
myFunc.bind(alt); 

Standard-Invocation Läuft als Erwartete

myFunc(); // output 'I am the alternate' 

Invocation über neue nicht wie erwartet (das ist die eine, die Winkel 1,5 bricht)

new myFunc(); // also outputs 'I am the alternate'</jscodeblock> 

Das erwartete Verhalten ist dass neue Aufruf wird eine neue o zurückgeben bjekt und nicht das gebundene.

Wenn Sie ein Polyfill für Function.prototype.bind benötigen, stellen Sie sicher, dass dieses Szenario richtig gehandhabt wird, z. B. das unter MDN gefundene Szenario.

Verwandte Themen