依赖项未定义-RequireJS

依赖项未定义-RequireJS,requirejs,Requirejs,我正在尝试将OpenLayers库与RequireJS一起使用 问题是,OpenLayers一直处于“未定义”状态,即使它被列为我的模块的唯一依赖项: define(['OpenLayers'],function (OpenLayers) { console.log(OpenLayers); }); 这将打印“未定义” 如果我用jquery替换OpenLayers(两个.js文件都在同一个文件夹中),它将不再是未定义的 那么为什么RequireJS没有加载OpenLayers呢?这段代码

我正在尝试将OpenLayers库与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'
        }