So habe ich eine ziemlich umfassende AngularJS-Anwendung, die RequireJS zu modularisieren verwendet und auch Grunt (RequireJS Optimizer-Plugin), um den Code zu kompilieren und zu minimieren.AngularJS Anwendung mit RequireJS gibt "verwenden strenge" Fehler in Safari & Firefox
Der minimierte Code gibt mir die folgenden Fehler in Firefox:
"Syntaxerror: im Strict-Modus-Code, können Funktionen nur auf höchster Ebene deklariert werden oder unmittelbar innerhalb einer anderen Funktion"
Und in Safari :
"SyntaxError: Strict-Modus lässt Funktionsdeklarationen in einer lexikalisch geschachtelten Anweisung nicht zu."
Hier ist der erste Teil des Codes.
function(e, t, n) {
"use strict";
function r(e) {
return function() {
var t = arguments[0],
n = "[" + (e ? e + ":" : "") + t + "] ",
r = arguments[1],
i = arguments,
s = function(e) {
return typeof e == "function" ? e.toString().replace(/ \{[\s\S]*$/, "") : typeof e == "undefined" ? "undefined" : typeof e != "string" ? JSON.stringify(e) : e
},
o, u;
o = n + r.replace(/\{\d+\}/g, function(e) {
var t = +e.slice(1, -1),
n;
if (t + 2 < i.length) return n = i[t + 2], typeof n == "function" ? n.toString().replace(/ ?\{[\s\S]*$/, "") : typeof n == "undefined" ? "undefined" : typeof n != "string" ? ht(n) : n;
return e
}), o = o + "\nhttp://errors.angularjs.org/1.2.29/" + (e ? e + "/" : "") + t;
for (u = 2; u < arguments.length; u++) o = o + (u == 2 ? "?" : "&") + "p" + (u - 2) + "=" + encodeURIComponent(s(arguments[u]));
return new Error(o)
}
}
function E(e) {
if (e == null || z(e)) return !1;
var t = e.length;
return e.nodeType === 1 && t ? !0 : j(e) || q(e) || t === 0 || typeof t == "number" && t > 0 && t - 1 in e
}
function S(e, t, n) {
var r;
if (e)
if (R(e))
for (r in e) r != "prototype" && r != "length" && r != "name" && (!e.hasOwnProperty || e.hasOwnProperty(r)) && t.call(n, e[r], r);
else if (q(e) || E(e))
for (r = 0; r < e.length; r++) t.call(n, e[r], r);
else if (e.forEach && e.forEach !== S) e.forEach(t, n);
else
for (r in e) e.hasOwnProperty(r) && t.call(n, e[r], r);
return e
}
"
Der Code ist funktioniert gut, bevor kompiliert, concatened und minimierte werden
Wer noch keine Ratschläge, was zu versuchen zu tun, um dies zu beheben?
Vielen Dank für Ihre schnelle Antwort. Im Grunde verschönerte ich die js und entdeckte, dass einige hinzugefügten Code tatsächlich Funktionsdeklarationen innerhalb einer if-Anweisung war. Ich war nicht mit dieser Forderung der Verwendung strikt vertraut, vor allem da ich nicht gewohnt bin, streng zu verwenden und dieser jemand elses Code, an dem ich arbeite. – Aman