RequireJS 不加载 createjs

RequireJS not loading createjs

我严格按照 requirejs 和 preloadjs 文档进行操作,但无法通过 requirejs 获取对 createjs 的引用。这是我的配置:

requirejs.config({
    baseUrl: "script/module",
    paths: {
        createjs: "/bower_components/PreloadJS/lib/preloadjs-0.6.1.min"
    },
    shim:{
        "createjs": {
            exports: "createjs"
        }
    }
});

然后在我的 mainjs 中:

define(
    ["createjs"],
    function (createjs) {
        //At this point all controllers are loaded and ready to go
        console.log(createjs);
        return {};
    }
);

...但是 creatjs 在记录时输出这个对象:

{
    noConflict: ()
    parse: parse()
    runInContext: a(b,d)
    stringify: stringify()
    __proto__: Object
}

我错过了什么?或者这是一个错误?我需要 2.1.2 和 preloadjs 0.6.1。这非常令人沮丧,因为我使用了所有形式的垫片、重命名,甚至删除了 baseUrl。我已经多次从头开始。

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

我已在 github 此处将其作为 preloadjs 问题打开,但目前尚未收到任何回复。 https://github.com/CreateJS/PreloadJS/issues/171

感谢您的帮助!

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

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

特别是在 preloadjs 的情况下,只是 return PreloadJS 变量引用而不是 createjs。

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

当然,这仍然会在全局命名空间中留下 createjs。