当Durandal 2.0问世时,我一直致力于Hottowel项目,所以我自然而然地升级了。它混淆了文件结构,将require.js
和durandal
文件夹移动到Scripts
文件夹等。我最终将durandal
文件夹移回App
文件夹,与原始Hottowel模板一样,并指向require.js
中Scripts
文件夹中的index.cshtml
。
但突然间,我在页面加载时遇到了这些错误:
GET http://localhost:7153/App/jquery.js 404 (Not Found) require.js:1880
GET http://localhost:7153/App/plugins/history.js 404 (Not Found) require.js:1880
GET http://localhost:7153/App/knockout.js 404 (Not Found) require.js:1880
我在加载require和start durandal之前加载jQuery和knockout捆绑(使用ASP.NET捆绑):
@Scripts.Render("~/scripts/vendor")
@if(HttpContext.Current.IsDebuggingEnabled) {
<script type="text/javascript" src="~/Scripts/require.js" data-main="@Url.Content("~/App/main.js")"></script>
} else {
<script type="text/javascript" src="~/App/main-built.js"></script>
}
知道怎么解决吗?我不想再回到Durandal 1.2。
答案 0 :(得分:1)
考虑require尝试查找文件的位置。例如,如果http://localhost:7153/App/jquery.js
导致404,那么我认为是因为该文件不在该位置。
RequireJS将根据baseUrl加载资源(如果已指定),以及作为任何require.config()
调用的一部分设置的任何路径。
看看你是否可以找到将jQuery指定为定义模块的依赖项,或者需要它的位置。我认为它只是被要求作为'jquery'。
在这种情况下,您需要告诉需要jQuery所在的位置。同样适用于淘汰赛。对于Durandal的东西,您可能需要将整个durandal文件夹重新指定到特定的位置,具体取决于您找到文件的位置。
您的require config调用可能如下所示:
require.config({
baseUrl: '/',
paths: {
'jquery': 'scripts/jquery',
'knockout': 'scripts/knockout-debug',
'durandal': 'scripts/durandal'
}
});
如果可能,请查看Durandal示例2.0,您将看到示例中使用的require.config()
,您可以将其与文件夹结构进行比较。