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';

主.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

升级后我遇到了类似的问题,并为我创建了一个路由属性为 '' 的默认路由。

因此,不要使用您的 startModule 属性,而是尝试将您的 labTool 路由设置为具有 '' 的路由属性。

于 2013-08-28T04:48:32.647 回答
2

万一其他人遇到这种情况,如果路由名称中包含非 ascii 字符,也会发生此错误。

不工作:

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

在职的:

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