5

ASP.NETのバンドルおよびミニファイ機能を使用して簡単なテストを設定しました。私は2つの非常に単純なjsファイルを持っています:

〜/ JS / Site.js

(function echo1() {
    alert("this is site.js");
})();

〜/ JS / test.js

(function echo2(value) {
    alert("and this is test.js");
})();

次のようにバンドルを作成しました。

bundles.Add(new ScriptBundle("~/bundles/scripts/site-globals").Include(
    "~/JS/Site.js", 
    "~/JS/test.js"));

を使用してページ上のバンドルを参照しました@Scripts.Render("~/bundles/scripts/site-globals")


(web.configで)デバッグ中のサイトを実行すると<compilation debug="true" targetFramework="4.5" />、期待どおりの結果が得られます。2つのアラートボックスが次々に表示されます。

ただし、change to release(<compilation debug="false" targetFramework="4.5" />)を実行すると、最初のアラートボックスのみが表示され、ブラウザーに送信される結合されたJSファイルはtest.jsのコンテンツを完全に無視します。

「結合および縮小」された出力は次のとおりであり、誤ってSite.jsからのコードのみが含まれています。

(function(){alert("this is site.js")})()

なぜこれが起こっているのかについてのアイデアは大歓迎です!ありがとう

4

2 に答える 2

5

この問題の原因がわかりました。いずれかの JavaScript ファイルの最終行にコメントがある場合、それらはnewline なしで結合され、次のファイルの最初の行がコメント アウトされます。

これを示すスタック オーバーフローに関する別の質問へのリンクを次に示します

私の場合、Web Essentials Visual Studio プラグインを使用して JavaScript ファイルを縮小していました。JS ファイルごとに .js.map ファイルを作成し、各 .min.js ファイルの最後に次のようなコメント行があり、これが問題の原因であることが判明しました。

//@ sourceMappingURL=somefile.min.js.map

マッピング ファイルは必要なかったので、この機能をオフにしました。Options -> Web Essentials -> Javascript -> Set Generate source maps (.map) to false

これがこの問題を見つけた人に役立つことを願っています!

于 2013-03-01T14:51:11.880 に答える
1

マット、バンドルコードは正しいように見えますが、リリースモードで実行しているときに、ブラウザコンソールでjsエラーが発生しますか?また、補足として、JSファイルへのフォルダーパスを定義するだけで、それらがすべて含まれることをご存知ですか?

于 2012-12-28T16:52:27.120 に答える