Requirejs Require.js可以';t加载定义自己别名的库
我正在尝试将下划线.String库引入Require.js项目。该库设置为支持AMD,代码如下:Requirejs Require.js可以';t加载定义自己别名的库,requirejs,Requirejs,我正在尝试将下划线.String库引入Require.js项目。该库设置为支持AMD,代码如下: } else if (typeof define === 'function' && define.amd) { // Register as a named module with AMD. define('underscore.string', [], function() { return _s; }); 但我有一个问题:我没有将库保存
} else if (typeof define === 'function' && define.amd) {
// Register as a named module with AMD.
define('underscore.string', [], function() {
return _s;
});
但我有一个问题:我没有将库保存在根路径中,而是将它保存在“ext/underline.string”中。这似乎不可能要求图书馆
我已尝试要求同时使用“ext/underline.string”
和“underline.string”
,并定义路径(包括“underline.string”:“ext/underline.string”
)。当我没有路径,并且需要“下划线.string”时,文件(毫不奇怪)不会加载,而在所有其他情况下,文件会加载,但库不会被定义
如果我以后尝试引用库,我会得到:
错误:尚未为加载模块名“下划线.string”
背景:
。。。即使我在定义行之后立即这样做(在上面的代码中)!换句话说,如果我将代码更改为
define('underscore.string', [], function() {
return _s;
});
console.log(require('underscore.string'))
Require告诉我“下划线.字符串”尚未加载
有人能帮我弄清楚如何将此库引入我的代码库吗?在您需要的配置中,请执行以下操作:
var require = {
...
map: {
"*": {
"underscore.string": "path/to/file/disregarding/baseUrl"
}
}
};
注意:文件的路径应该包括baseUrl
,因此在您的情况下,假设baseUrl=“scripts”
,它将类似于:
"scripts/ext/underscore.string.js"
注2:它需要
.js
扩展名,即确切的文件名。是名为{path}/ext/下划线.string.js
的文件还是其他文件?是的;我的baseUrl
是assets/js
,库位于assets/js/ext/underline.string.js
。啊,听起来很完美。。。除非它不起作用:-(当我尝试这种方法时,映射似乎起作用:下划线.string确实被加载(我可以判断是否放入了调试器),但传递给define的函数从未被调用(同样,我可以从调试器行中判断)。需要下划线.string
的模块(加载文件后)获取未定义的
作为模块的值,这是有意义的,因为返回的函数从未运行过。关于如何让它运行,有什么想法吗?至少我们领先了一步。您可以尝试将映射的键从“下划线.字符串”
更改为例如“下划线字符串”
(并相应地修改require调用)。RequireJS可能认为.string
是一个文件扩展名-只是为了排除这种情况。这几乎奏效了。我不仅必须更改映射(如您所建议的),但随后我还必须将“下划线.string”:“ext/underline.string”
添加到路径中。当我这样做时,我终于能够导入库了!谢谢。