Javascript RequireJS未加载createjs

Javascript RequireJS未加载createjs,javascript,requirejs,createjs,Javascript,Requirejs,Createjs,我严格遵守了requirejs和PrelodJS文档,但无法让requirejs获得对createjs的引用。这是我的配置: requirejs.config({ baseUrl: "script/module", paths: { createjs: "/bower_components/PreloadJS/lib/preloadjs-0.6.1.min" }, shim:{ "createjs": { e

我严格遵守了requirejs和PrelodJS文档,但无法让requirejs获得对createjs的引用。这是我的配置:

requirejs.config({
    baseUrl: "script/module",
    paths: {
        createjs: "/bower_components/PreloadJS/lib/preloadjs-0.6.1.min"
    },
    shim:{
        "createjs": {
            exports: "createjs"
        }
    }
});
然后在我的mainj中:

define(
    ["createjs"],
    function (createjs) {
        //At this point all controllers are loaded and ready to go
        console.log(createjs);
        return {};
    }
);
…但当记录输出此对象时创建JS:

{
    noConflict: ()
    parse: parse()
    runInContext: a(b,d)
    stringify: stringify()
    __proto__: Object
}
我错过了什么?还是这是一只虫子?我使用的是require 2.1.2和Preload JS 0.6.1。这是非常令人沮丧的,因为我使用了所有形式的垫片、重命名,甚至删除了baseUrl。我已经多次从零开始

此外,我还尝试将所有对“createjs”的引用替换为“prelojs”。问题是全局对象“createjs”是全局名称空间中可用的对象(正如您所期望的,我可以从requirejs中访问它)

我已经在github上打开了这个问题,但是到目前为止还没有收到任何回复。

谢谢你的帮助

您可以使用编译(缩小)的createjs代码,并在最后添加以下内容,使整个库成为单个AMD模块

if (typeof define === "function" && define.amd) {
    define(function() {
        return window.createjs;
    });
}
对于PreloJS,只需返回PrelodJS变量引用,而不是createjs

if (typeof define === "function" && define.amd) {
    define(function() {
        return window.createjs.PreloadJS;
    });
}

当然,这仍然将createjs保留在全局名称空间中。

createjs模块的编写没有考虑AMD语法。你需要大量修改这个库。一千张赞成票!我在一个define调用中包装了整个缩小版本,并返回了this.createjs,它工作得很顺利。你是对的,不管怎样,它都会注册到全局对象上。我甚至尝试将define的回调绑定到一个简单的对象上,但这破坏了createjs的实现,因此如果不重写源代码,就无法阻止它进入全局范围。无论如何,这是有效的,所以谢谢!