2013-10-31 28 views
1

我在尝试激活我的外壳时遇到了404错误。它似乎找到了shell.js,但后来表明它找不到shell.html,因为它查找的地方不对!从1.2升级到Durandal 2.0 - 没有找到shell.html

我试图强迫约定明确告诉它在哪里看,但它仍然无法正常工作。像这样:viewLocator.useConvention('viewmodels', 'views', '');

,但我仍然得到:

App/viewmodels/shell.html 404 (Not Found)

显然,它不应该被看在app/viewmodels/,它应该在app/views/

在我的项目不同的是,我” m不使用第三方的'/ scripts /'文件夹,我使用我自己的文件夹'/ content /'。我还将'/ app /'文件夹中与杜兰达有关的所有事情都放在了里面。

这里有我的项目的一些关键文件的结构:

+app (folder) 
    main.js 
    > durandal (folder) 
    app.js 
    r.js 
    require.js 
    text.js 
    viewEngine.js 
    viewLocator.js 
> plugins (folder) 
    router.js 
> viewmodels (folder) 
    shell.js 
> views (folder) 
    shell.html 
在main.js

> 此处,我设置的外壳被称为: app.setRoot('viewmodels/shell');

这里也就是在路径main.js:

paths: { 
     'text': 'durandal/text', 
     'durandal': 'durandal', 
     'plugins': 'durandal/plugins', 
     'transitions': 'durandal/transitions' 
} 
在shell.js> 好,它其实并不重要,因为它

”这一点已经抛出了404。

有什么想法?

+0

“plugins”和“text”的路径看起来不正确。如果baseUrl是“app”,那么它应该是“插件”:“插件”和“文本”:“文本”。 – RainerAtSpirit

+0

好想法,但他们是正确的。从我上面的图画中可以看出来,但路径实际上是'app> durandal'和下面的'plugins'目录。如果我删除'durandal /'部分,它不会找到这些文件,并在我已经收到的文件上引发404错误。 – bigerock

回答

1

我明白了。我在main.js中定义模块的路径错误。不知道为什么他们不抛出一个错误,但无论如何,这里是我变了:

来自: define(['../app/durandal/system', '../app/durandal/app', '../app/durandal/viewLocator'], function (system, app, viewLocator) {

到: define(['durandal/system', 'durandal/app', 'durandal/viewLocator'], function (system, app, viewLocator) {

似乎现在的工作。