私は現在、Web サイトの JavaScript 部分をリファクタリングしています。現在、Browserify を使用していくつかのスクリプトをまとめています。結果のスクリプトは、SquishIt を使用して他のリソースと一緒にバンドルされます。デバッグ モードでは、SquishIt がすべてのスクリプトを一緒にバンドルしていない場合、すべて正常に動作しているように見えますが、本番環境で実行し、SquishIt がすべてを一緒にバンドルしている場合、バンドルの Browserify 部分からエラーが発生します。エラーは、r
以下の length プロパティがないと不平を言っています (18 行目を参照)。コードのこの部分は、スクリプトをバンドルするときに Browserify によって作成されます。
(function e(t, n, r) {
function s(o, u) {
if (!n[o]) {
if (!t[o]) {
var a = typeof require == "function" && require;
if (!u && a) return a(o, !0);
if (i) return i(o, !0);
var f = new Error("Cannot find module '" + o + "'");
throw f.code = "MODULE_NOT_FOUND", f
}
var l = n[o] = {
exports: {}
};
t[o][0].call(l.exports, function(e) {
var n = t[o][1][e];
return s(n ? n : e)
}, l, l.exports, e, t, n, r)
}
return n[o].exports
}
var i = typeof require == "function" && require;
for (var o = 0; o < r.length; o++) s(r[o]);
return s
})({
SquishIt を使用してすべてのスクリプトをバンドルすることで、ブラウザ化されたスクリプトのロジックが壊れることはまったく考えられません。これの原因は何ですか?この要点は、関連する場合に備えて、ソース コード全体を示しています。
ASP.NET 側 (バンドル内) は何も変更していません。「Head.ascx」の関連部分は次のようになります。
Bundle.JavaScript()
.Add(Assets.JavaScript.GetUrl("main.js").ToString())
.Add(Assets.JavaScript.GetUrl("Plugins/raphael-min.js").ToString())
.Add(Assets.JavaScript.GetUrl("Plugins/vector_map.js").ToString())
// more ...
.Render("~/Content/"+Assets.VersionString+"/Scripts/Combined/combined.js")