0

MVC アプリケーションの最初の展開を実行したところですが、Javascript でいくつかの問題に遭遇しました。

実行時に物事を接続するために、私はこれを行います:

_Layout.cshtml

@if (IsSectionDefined("MyPage"))
{
    <script type="text/javascript">
        $(document).ready(function () {
            @RenderSection("MyPage", required: false)
        });
    </script>
}

MyPage.cshtml

次に、Razor ビューでこれを行います。

@section MyPage
{
    myPage.SomeFunction();
}

myPage.js

(function (myPage, $) {

    myPage.SomeFunction = function () {
    ...
    };

}(window.myPage= window.myPage|| {}, jQuery));

これはすべてVS内のデバッグでうまく機能していますが、展開するとすぐに(NuGetパッケージのOtopus Deployを使用した継続的展開)、次のようなエラーが表示され始めます。

ReferenceError: myPage is not defined.

ソースを表示してバンドル リンクをたどると、コードが表示されます...

しかし、ファイルの先頭には次のような縮小エラーがあります。

/* Minification failed. Returning unminified contents.
(683,1-2): run-time warning JS1002: Syntax error: }
(683,51-52): run-time warning JS1002: Syntax error: }
 */
// Contains all the javascript required by the myPage page

現在、Visual Studio で JSLint エラーに取り組んでいますが、ページ ソースから関数にリンクできるように JS が読み込まれるため、これらは JS の ReferenceError に直接関連するというよりも、フォーマットに関するものだと思います。

何を見るべきか、これを修正する方法についての指針はありますか?

4

1 に答える 1

0

これには一瞬戸惑いました。

すべての Javascript がそこにあり (ページ ソースのバンドル リンクからリンク可能)、すべてのファイルがそこにあり、すべてが dev で機能していました (常にではありませんか?)。

とにかく、デプロイされたアプリケーションでこのエラーが発生した場合は、いくつかの手順を実行する必要があります。

まず、Visual Studio ツールJSLint.VS2012をダウンロードしてインストールする必要があります。次に、これを設定して警告を表示し、ビルドに失敗するように設定しないでください。JSLint は親切ではなく、非常に厳格です (BP への準拠はあなたの選択ですが、確実にお勧めします!)

したがって、アプリをデプロイすると、素敵な JS がすべて壊れてしまいます。心配する必要はありません... Web アプリの Global.asax ファイルに移動し、Application_Start メソッドに次の内容を含めます。

BundleTable.EnableOptimizations = true;

したがって、この設定セットを使用すると、Visual Studio 内でアプリをデバッグ モードで起動し、すべての最適化を強制してテストの縮小を行い、デプロイされたバージョンにテストをより厳密にモデル化できます。

作業が完了し、問題がより明確になったら、新しい JSLint VS プラグインからのレポートを使用して潜在的な問題に取り組み、構文やその他のフォーマットの問題を修正することができます。

于 2013-08-31T13:16:50.653 に答える