依赖项未定义-RequireJS
我正在尝试将OpenLayers库与RequireJS一起使用 问题是,OpenLayers一直处于“未定义”状态,即使它被列为我的模块的唯一依赖项:依赖项未定义-RequireJS,requirejs,Requirejs,我正在尝试将OpenLayers库与RequireJS一起使用 问题是,OpenLayers一直处于“未定义”状态,即使它被列为我的模块的唯一依赖项: define(['OpenLayers'],function (OpenLayers) { console.log(OpenLayers); }); 这将打印“未定义” 如果我用jquery替换OpenLayers(两个.js文件都在同一个文件夹中),它将不再是未定义的 那么为什么RequireJS没有加载OpenLayers呢?这段代码
define(['OpenLayers'],function (OpenLayers) {
console.log(OpenLayers);
});
这将打印“未定义”
如果我用jquery替换OpenLayers(两个.js文件都在同一个文件夹中),它将不再是未定义的
那么为什么RequireJS没有加载OpenLayers呢?这段代码对我来说很有用:
require.config({
shim: {
OpenLayers: {
exports: 'OpenLayers'
}
}
});
require(['OpenLayers'], function(OpenLayers) {
console.log(OpenLayers);
});
我的脊梁也有同样的问题。木偶。将
'marionete':{exports:'marionete'}
添加到垫片
对象中
此垫片
添加件可用于OpenLayers和木偶,原因如下(来自):
垫片:为不使用define()声明依赖项和设置模块值的较旧的传统“浏览器全局”脚本配置依赖项和导出。示例(RequireJS 2.1.0+):
谢谢你,真管用!然而,我仍然想知道为什么需要这样做。我认为shim用于需要其他依赖项的库,但OpenLayers不需要。我不知道。我对require.js很陌生。我不知道为什么,但是OpenLayers.js库将自己附加到全局名称空间,无论是否使用垫片配置。使用shim config。有关可能的解释,请参见此:在下载Openlayers zip包时为我工作。有人设法让它与鲍尔一起工作吗??应该是一样的,但是没有在那里找到OpenLayers.debug.js…你是我的救世主!;)
requirejs.config({
shim: {
'backbone': {
//These script dependencies should be loaded before loading
//backbone.js
deps: ['underscore', 'jquery'],
//Once loaded, use the global 'Backbone' as the
//module value.
exports: 'Backbone'
}