Require.js无法加载定义自己别名的库

时间:2014-03-19 17:29:10

标签: requirejs

我试图将Underscore.String库带入Require.js项目。该库设置为支持AMD,代码如下:

} else if (typeof define === 'function' && define.amd) {
    // Register as a named module with AMD.
    define('underscore.string', [], function() {
        return _s;
    });

但是我遇到了一个问题:我没有将库保留在我的根路径中,我将它保存在" ext / underscore.string"中。这似乎使得无法要求图书馆。

我已尝试同时要求"ext/underscore.string""underscore.string",无论是否定义路径("underscore.string": "ext/underscore.string")。当我没有路径时,我需要" underscore.string"文件(毫不奇怪)不加载,在所有其他情况下文件加载但文件库没有定义。

如果我之后尝试引用该库,我会得到:

  

错误:模块名称" underscore.string"尚未加载   上下文:

...即使我在定义行之后立即执行此操作(在上面的代码中)!换句话说,如果我将代码更改为

define('underscore.string', [], function() {
    return _s;
});
console.log(require('underscore.string'))

要求告诉我" underscore.string"尚未加载!

任何人都可以帮我弄清楚如何将这个库带入我的代码库吗?

1 个答案:

答案 0 :(得分:1)

在您的require配置中执行:

var require = {
    ...
    map: {
        "*": {
            "underscore.string": "path/to/file/disregarding/baseUrl"
        }
    }
};

注意:文件路径应该包含 baseUrl,因此在您的情况下并假设为baseUrl="scripts",它将类似于:

"scripts/ext/underscore.string.js"

注2:它需要.js扩展名,即它是确切的文件名。