1

Durandal ベースのソリューションをデプロイしようとしました。しかし、展開すると次のエラーが発生します。

Uncaught ReferenceError: requirejs is not defined main.js:1
(anonymous function)

プロジェクトと共にデプロイされたファイルを調べたところ、require がソリューション/パスに含まれていました。ファイルはそれらとともに展開されています。開発コピーと本番コピーの違いは、Java スクリプト ファイルが圧縮されることだけです。私の次のステップは、これが何らかの形で問題に関連しているかどうかを確認することです?

更新: 問題の原因は次のとおりであることがわかりました。

<body>
    <div id="applicationHost">
        @Html.Partial("_splash")
    </div>

    @Scripts.Render("~/scripts/vendor")
    @if (HttpContext.Current.IsDebuggingEnabled)
    {
        <script type="text/javascript" src="~/App/durandal/amd/require.js" data-main="@Url.Content("~/App/main")"></script>
    }
    else
    {
        <script type="text/javascript" src="~/App/main.js"></script>
    }

</body>

IsDebuggingEnabledチェックを削除し、次のものをそのままにしておくと、すべて動作します (明らかに)

 <script type="text/javascript" src="~/App/durandal/amd/require.js" data-main="@Url.Content("~/App/main")"></script>

私が覚えている限りでは、このコード (テンプレートによる最初のプロジェクト セットアップで作成されたもの) には触れていません。したがって、すべてがデュランダル VSX テンプレートからそのままである必要があります。

非デバッグ展開中にrequireが削除される理由は何ですか? :/

4

1 に答える 1

2

Durandal 1.2 には、Almond (デフォルト) または RequireJS がバンドルされた最適化バージョンを作成するoptimizer.exe ( http://durandaljs.com/documentation/Optimizing-On-Dot-Net/ ) が付属しています。main-built.js上記の例では、ソースをロードしようとしてmain.jsいるため、エラーがスローされます。

optimizer.exe を正常に実行した後、コードを次のように変更する必要があります。

...
else
{
    <script type="text/javascript" src="~/App/main-built.js"></script>
}
于 2013-07-08T07:58:50.607 に答える