1

1.2 から 2.0 に変換されたアプリを読み込もうとすると、コンソール ウィンドウに「ルートが見つかりません」というメッセージが表示されます。失敗した時点でどのルートを見つけようとしているかをデバッグする方法はありますか? 「ルートが見つかりません:/viewmodels/wrongfolder/startup」などと表示されたら便利です!

1.2 から 2.0 にアップグレードする前は、これらすべてが完全に機能していたことに注意してください。そのため、Durandal 設定の違いに対処する必要があります。ファイルが削除されたり、失われたり、移動されたりしていないため、nuget によって更新されているスクリプトの新しいバージョン以外のアプリで変更があったわけではありません。

main.js と config.js は「app」フォルダーのルートにあります。Shell.js は app/viewmodels にあり、shell.html は app/views にあります。すべてのビュー/ビューモデルは、メインの /app フォルダーの下の関連フォルダーにあります。

ルートが返された「config.js」ファイルがあります。

var routes = [{
    route: 'home',
    moduleId: 'home',
    title: 'Home',
    nav: true
}, {
    route: 'labTool',
    moduleId: 'labTool',
    title: 'Lab Tool',
    nav: true
}];

var startModule = 'labTool';

main.js:

//specify which plugins to install and their configuration
app.configurePlugins({
    router: true,
    dialog: true,
    widget: false
});

app.start().then(function () {
    viewLocator.useConvention();
    router.makeRelative({ moduleId: 'viewmodels' });
    app.setRoot('viewmodels/shell');

    router.handleInvalidRoute = function (route, params) {
        logger.logError('No route found', route, 'main', true);
    };
});

Shell.js:

    var inEditMode = ko.observable(false); //set edit mode to false at start

    var shell = {
        activate: activate,
        router: router,
        inEditMode: inEditMode
    };
    return shell;


    function activate() {
        return datacontext.primeData()
            .then(boot)
            .fail(failedInitialization);
    }

    function boot() {
        logger.log('Application Loaded!', null, system.getModuleId(shell), true);
        router.map(config.routes).buildNavigationModel();
        return router.activate(config.startModule);
    }

    function failedInitialization(error) {
        var msg = 'App initialization failed: ' + error.message;
        logger.logError(msg, error, system.getModuleId(shell), true);
    }

一部のコードは、1.2 から 2.0 への変更を処理するためにまだ編集が必要な場合がありますが、現在はほとんどのコードが揃っていると思います。

4

2 に答える 2

2

他の誰かがこれに遭遇した場合、ルート名にASCII以外の文字が含まれている場合にも、このエラーが発生する可能性があります。

動作していません:

{ route: 'Møøse', ... }

働く:

{ route: 'Moose', title: 'Møøse', ... }
于 2013-12-18T23:01:04.523 に答える
2

アップグレード後に同様の問題が発生し、ルート プロパティが '' のデフォルト ルートを作成すると、ソートされました。

そのため、startModule プロパティを使用する代わりに、labTool のルートをルート プロパティに設定してみてください。

于 2013-08-28T04:48:32.647 に答える