これで、RequireJSをモジュール化し、Grunt(RequireJSオプティマイザプラグイン)を使用してコードをコンパイルして最小化した非常に包括的なAngularJSアプリケーションを取りました。RequireJSを使用したAngularJSアプリケーションはSafariとFirefoxで "strict strict"エラーを表示します
縮小さコードは私にFirefoxで次のエラーを与える:
は:
とSafariでの「にSyntaxError strictモードのコードでは、関数は、トップレベルのみで、またはすぐに別の関数内で宣言することができます」 :
「にSyntaxError:厳格モードは辞書的にネストされた文で関数宣言を許可していません。」ここで
は、コードの最初の部分である:
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
}
「
コードがconcatenedと縮小さ、コンパイルされる前に、正常に動作している
誰もが何に上の任意のアドバイスを持っています。この問題を解決するためにやろう?
あなたの迅速な答えをいただき、ありがとうございます。 は基本的に私は、JSを清書し、いくつか追加されたコードが実際にif文の内部関数の宣言であることを発見しました。 私はこの厳しい使用の要求に精通していませんでした。特に厳格な使用に慣れていないので、私はこのコードで作業しています。 – Aman