Javascript RequireJS+;具有自调用函数的oCanvas

Javascript RequireJS+;具有自调用函数的oCanvas,javascript,requirejs,amd,Javascript,Requirejs,Amd,我在使用oCanvas时遇到问题-它不支持AMD开箱即用,因此在RequireJS中我定义了一个垫片: configuration.js require( function () { requirejs.config({ shim: { 'lib/ocanvas': { exports: ['oCanvas'] } }

我在使用oCanvas时遇到问题-它不支持AMD开箱即用,因此在RequireJS中我定义了一个垫片: configuration.js

require(
    function () {
        requirejs.config({
            shim: {
                'lib/ocanvas': {
                    exports: ['oCanvas']
                }
            }
        });
    }
);
加载垫片相关配置的方式(我认为将其添加到
require
入口点文件就足够了):

问题是我无法在JS文件中获取
oCanvas
对象:

define(['lib/ocanvas'],
    function (oCanvas) {}
这里似乎没有定义。在中,我看到有两个自调用函数,它们将
oCanvas
对象置于全局状态,如下所示:
window.oCanvas=oCanvas
。也许这对RequireJS不起作用

require(
    function () {
        requirejs.config({
            shim: {
                'lib/ocanvas': {
                    exports: 'oCanvas'
                }
            }
        });
    }
);

尝试将其作为字符串而不是数组传递?

而不是
requirejs.config
我现在使用
require.config
并在那里传递一个对象:

require.config({
    shim: {
        'lib/ocanvas': {
            exports: 'oCanvas'
        }
    }
});

这对我很管用。

我以为您将不符合AMD的脚本中使用的全局变量作为字符串传递给exports,而不是数组(如在deps中),我看到了带有数组的示例。此外,返回字符串并不能改变这种情况。遗憾的是,这没有帮助。事实上,我在某处看到过带有数组的示例。很难想象这些示例会起作用;文档明确指出,
exports
属性的值是一个字符串(无论如何,如何解释多个导出?别名?)有什么区别?对不起,require.config()和requirejs.config()之间有什么区别?
require.config({
    shim: {
        'lib/ocanvas': {
            exports: 'oCanvas'
        }
    }
});