在没有加载到“mysite.com/”时,RequireJS不尊重相对路径

时间:2013-08-11 23:37:00

标签: javascript requirejs

我在使用requirejs和相对路径时遇到了一些麻烦。

这是在我的HTML文件中:

<script data-main="/app/main.js" src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.1/require.js"></script>

我的配置设置如下:

requirejs.config({
    baseUrl: '/vendor',
    paths: {
        // APP FILES
        'app-base'   : '../app',
        'app-config' : '../config',
        models       : '../models', // where the models and collections are
        templates    : '../templates',
        views        : '../views',
        lib          : '../lib',
        tasks        : '../tasks',
        router       : '../app/router',

        // VENDOR FILES
        marionette : 'backbone.marionette',
    },
    deps: ['router'],
    shim: {...}
});

当我的应用从网址“localhost:3000 /”或“localhost:3000 / applications”加载时,所有这些路径都能正确解析。但是当它从“localhost:3000 / applications / app1”加载时,路径解析不正确。

路径分别如下所示。

正确:

“/模型/测试model.js”

不正确:

“/应用/模型/测试model.js”

我正在使用CJS加载我的模块,如下所示:

define( function( require ) {
   var TestModel = require('models/test-model.js');
});

当我将上述内容更改为此时 - > var TestModel = require('/models/test-model.js');,它有效。但这违背了使用相对路径的目的。

如果有人可以帮助我,我会很高兴。我非常困惑。

1 个答案:

答案 0 :(得分:2)

当需要模块时,除非指定完整路径,否则请务必取消.js扩展名。