Javascript Class is not defined Error
Hey @henbug
Ich hatte sporadisch öfter mal das Problem das meine Controls nicht geladen haben. Aber den Fehler irgendwie nie genauer unter die Lupe genommen. (ich glaube @michael.daniel hatte das Problem auch schon)
Dieses mal hat mich doch die Neugier gepackt. Folgendem Fehler, der als einizger in der Konsole aufgetaucht ist bin ich also nachgegangen. (Quelle meine lokale Version der Finkenkoje)
Problem
Folgende Stelle ('qui/classes/DOM'
) führt laut dieser Meldung also zum Abbruch der Javascript Ausführung:
"use strict";
console.log('xxx');
window.$quistorage = {};
/**
* The DOM class emulate similar methods
* like a DOMNode to a normal Object
*
* @class qui/classes/DOM
*
* @param {Object} options -
* With options you can set attributes or extend the Object width methods and events
*
* @memberof! <global>
*/
return new Class({
Class ist in diesem Moment nicht bekannt. Einige Ausgaben später stellte sich heraus:
Mootools ist zum Zeitpunkt als qui/classes/DOM
required wird nicht definiert.
Der Fehler
Die Fehlersuche hat sich lang und kryptisch gestaltet da eigentlich qui/QUI
korrekterweise erst nach erfülltem window.loadMootools() Promise in packages/quiqqer/quiqqer/lib/templates/headerNoConflict.html
geladen wird.
Kurz und gut. packages/quiqqer/piwik/src/QUI/Piwik/piwik.html
hat sich als Übeltäter herausgestellt. Dort wird nämlich direkt qui/QUI required.
Seit dem Auskommentieren folgender Passage konnte ich den Fehler nichtmehr reproduzieren:
// add global quiqqer events
require(['qui/QUI'], function (QUI) {
QUI.addEvent('onQuiqqerUserAuthLoginSuccess', function () {
require(['piwikTracker'], function (piwikTracker) {
piwikTracker.then(function (Tracker) {
Tracker.setCustomUrl('/login');
Tracker.trackPageView();
});
});
});
QUI.addEvent('onQuiqqerUserAuthLogout', function () {
require(['piwikTracker'], function (piwikTracker) {
piwikTracker.then(function (Tracker) {
Tracker.setCustomUrl('/login');
Tracker.trackPageView();
});
});
});
if (eCommerce) {
require(['package/quiqqer/piwik/bin/eCommerceTracking']);
}
});
Mögliche Lösung
Denke das kann meiner Meinung nach ganz einfach behoben werden durch eben hier auch des Abwartens auf das resolvte Promise. Aber ich geh jetzt erstmal Essen ^^ ...