1

Durandal アプリを最適化しようとしていますが、main-built.js が空白です。

実行しようnode r.js -o app.build.js としましたが、ファイルが見つからないというエラーがスローされました。これらのパスを main.js ファイルに追加すると、個々のエラーがなくなりました。ただし、上記のコマンドは「依存関係のトレース: durnadal/amd/almond.custom」で終了するだけで、ファイルはまだ空白です。

質問: 以下のパスに入る必要があるのはどのライブラリですか? index.html で使用している外部ライブラリのようですが、正確なファイル名が必要ですか?

require.config({
    paths: {
        "text": "durandal/amd/text",
        "breeze": "lib/breeze/breeze.min",
        "knockout": "lib/knockout/knockout.mapping-latest",
    }
});

Durandal AMD フォルダーで Optimizer.exe を実行すると、main-built.js が空白になります。これは、生成される app.build.js ファイルです。Almond でより詳細なログを取得する方法についてのヘルプを歓迎します。私はoptimizer -verbose true運がないことを試みました。

{
  "name": "durandal/amd/almond-custom",
  "inlineText": true,
  "stubModules": [
    "durandal/amd/text"
  ],
  "paths": {
    "text": "durandal/amd/text"
  },
  "baseUrl": "C:\\DNNDev.me\\DesktopModules\\Framework.App\\App",
  "mainConfigFile": "C:\\DNNDev.me\\DesktopModules\\Framework.App\\App\\main.js",
  "include": [
    "text!about.html",
    "about",
    "appNavigation",
    "config",
    "text!dareAdd.html",
    "dareAdd",
    "text!dareDetail.html",
    "dareDetail",
    "text!dareList.html",
    "dareList",
    "text!dareListItem.html",
    "dataContext",
    "dataService",
    "dataServiceHelper",
    "enums",
    "errorWatcher",
    "text!home.html",
    "home",
    "text!index.html",
    "text!indextopcoat.html",
    "indextopcoat",
    "text!kendoIndex.html",
    "text!loader.html",
    "logger",
    "text!login.html",
    "login",
    "main-built",
    "main",
    "text!menu.html",
    "model",
    "text!navbar.html",
    "text!notifyOfError.html",
    "notifyOfError",
    "text!privacy.html",
    "privacy",
    "text!profile.html",
    "profile",
    "text!shell.html",
    "shell",
    "text!signup.html",
    "signup",
    "text!testpage.html",
    "testpage",
    "uiutilities",
    "userState",
    "viewModelHelper",
    "text!walkthrough.html",
    "walkthrough",
    "widgetService",
    "css/telerik/js/kendo.dataviz.min",
    "css/topcoat/js/hello",
    "css/topcoat/js/hello.min",
    "css/topcoat/js/index",
    "css/topcoat/lib/hello",
    "css/topcoat/lib/vendor/ender.min",
    "css/topcoat/lib/vendor/fastclick",
    "durandal/app",
    "durandal/composition",
    "durandal/events",
    "durandal/http",
    "text!durandal/messageBox.html",
    "durandal/messageBox",
    "durandal/modalDialog",
    "durandal/system",
    "durandal/viewEngine",
    "durandal/viewLocator",
    "durandal/viewModel",
    "durandal/viewModelBinder",
    "durandal/widget",
    "durandal/plugins/router",
    "durandal/transitions/entrance",
    "js/cordova",
    "js/facebookscript",
    "lib/bootstrap/bootstrap",
    "lib/bootstrap/bootstrap.min",
    "lib/breeze/breeze.debug",
    "lib/breeze/breeze.intellisense",
    "lib/breeze/breeze.min",
    "lib/breeze/q",
    "lib/breeze/q.min",
    "lib/jquery/jquery-2.0.3.intellisense",
    "lib/jquery/jquery-2.0.3",
    "lib/jquery/jquery-2.0.3.min",
    "lib/knockout/knockout-2.3.0.debug",
    "lib/knockout/knockout-2.3.0",
    "lib/knockout/knockout.mapping-latest.debug",
    "lib/knockout/knockout.mapping-latest",
    "lib/knockout/knockout.validation.debug",
    "lib/knockout/knockout.validation",
    "lib/moment/moment",
    "lib/moment/moment.min",
    "lib/ratchet/ratchet",
    "lib/sammy/sammy-0.7.4",
    "lib/sammy/sammy-0.7.4.min",
    "lib/toastr/toastr",
    "lib/toastr/toastr.min"
  ],
  "exclude": [],
  "keepBuildDir": true,
  "optimize": "uglify2",
  "out": "C:\\DNNDev.me\\DesktopModules\\Framework.App\\App\\main-built.js",
  "pragmas": {
    "build": true
  },
  "wrap": true,
  "insertRequire": [
    "main"
  ]
}
4

1 に答える 1

0

あなたのパスでは、bueno ではないマッピング プラグインと同じノックアウトへの参照を設定しています。

この回答に示されているように、Durandal.js オプティマイザーが機能していません (空の main-built.js)。Rainer が示すように実行すると、より具体的なエラーが表示されるはずです。

私が見つけた1つのこと-ビューモデルを削除するか、フォルダーまたはディレクトリを煉獄として使用する(削除しようとしている)場合、これらのファイルはアプリで使用されない可能性がありますが、ファイル構造にある場合は引き続き評価されますオプティマイザー。

編集

オプティマイザーの詳細については、ここを確認してください - durandal.js でのオプティマイザーの問題の追跡

また、デバッグまたはリリースをビルドしていますか? 正しいものをターゲットにしていますか? durandal オプティマイザーは、Visual Studio でビルド後のプロセスとしてビルドするときに間違ったパスを参照します

また、Knockout.js を参照している場合は、ノックアウト マッピング プラグインではなく、「lib/knockout/knockout-2.3.0」を参照することを意味していると思います。

何か不足していない限り、これらのパスを main.js ファイルに追加する必要はありません。Breeze と Knockout は既に参照されているはずです。プロジェクトの種類、エディターなどによって異なりますが、おそらく、DurandalBundleConfig の下の App.Start フォルダーにバンドルされています。そうでない場合は、index.html からライブラリを参照しているだけですか?

その場合は、それらをバンドル構成に移動します(このようなもの)-

  bundles.Add(
    new ScriptBundle("~/scripts/vendor")
      .Include("~/Scripts/jquery-{version}.js")
      .Include("~/Scripts/jquery-ui-{version}.min.js")
      .Include("~/Scripts/knockout-{version}.js")
      .Include("~/Scripts/sammy-{version}.js")
      .Include("~/Scripts/bootstrap.min.js")
      .Include("~/Scripts/knockout-bootstrap.min.js")
      .Include("~/Scripts/Q.js")
      .Include("~/Scripts/breeze.debug.js")
    );

Breeze は Q に依存するため、Breeze の前に Q をロードする必要があることに注意してください。

于 2013-07-30T14:36:40.817 に答える