我试图加载从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中。所有视图/视图模型都位于main / 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的变化,但我认为我现在已经完成了大部分工作。
答案 0 :(得分:2)
我在升级后遇到了类似的问题,并创建了一个默认路由,其路由属性为''为我排序。
因此,不要使用startModule属性,而是尝试将labTool路由设置为具有''的路由属性。
答案 1 :(得分:2)
如果其他人遇到此问题,如果路由名称中包含非ascii字符,也会发生此错误。
不工作:
{ route: 'Møøse', ... }
工作:
{ route: 'Moose', title: 'Møøse', ... }