如果你使用的是 Durandal 2.0 版之前的任何东西,你会得到这个,因为在你的 Shell.js 中你没有定义路由器,或者你对路由器模块的位置有一个错误的定义,或者你可能在你的索引中定义脚本通过 require.js “要求他们”
1st - 检查 shell.js,在顶部你应该有一个定义函数,它应该说/做这样的事情,并且应该像这样将它暴露给视图 -
define(['durandal/plugins/router'], function (router) {
var shell = {
router: router
};
return shell;
};
第二 - 检查并确保“durandal/plugins/router”指向解决方案资源管理器中的正确位置,在这种情况下,它是应用程序 > durandal > 插件 > 路由器。如果不是或没有路由器,您可以使用 nuget 添加它。
第三 - 确保您没有在索引或 shell html 页面中加载脚本。使用 require.js 时,您需要将正在加载的任何脚本移动到 require 语句中,以便一切正常运行。当您在其他地方加载它们时,通常会发生“不匹配的匿名定义()模块”错误 - http://requirejs.org/docs/errors.html#mismatch