依赖关系未定义 - RequireJS

wan*_*ist 2 requirejs

我正在尝试使用带有RequireJS的OpenLayers库.

问题是,OpenLayers一直被"未定义",即使它被列为我模块的唯一依赖项:

define(['OpenLayers'],function (OpenLayers) {
   console.log(OpenLayers);
});
Run Code Online (Sandbox Code Playgroud)

这将打印"undefined".

如果我用jquery替换OpenLayers(两个.js文件都在同一个文件夹中),它将不再是未定义的.

那么为什么OpenLayers没有被RequireJS加载?

Wer*_*rås 10

这段代码对我有用:

require.config({
    shim: {
        OpenLayers: {
            exports: 'OpenLayers'
        }
    }
});

require(['OpenLayers'], function(OpenLayers) {
    console.log(OpenLayers);
});
Run Code Online (Sandbox Code Playgroud)


mno*_*e01 6

我和Backbone.Marionette有同样的问题.添加'marionette': { exports: 'Marionette' }shim对象工作.

shim添加适用于OpenLayers和Marionette,原因如下(来自RequireJS文档):

shim:为不使用define()声明依赖关系并设置模块值的旧的传统"浏览器全局"脚本配置依赖关系和导出.示例(RequireJS 2.1.0+):

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'
        }
Run Code Online (Sandbox Code Playgroud)