我在这两个字母后面都跟随了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。我已经从头开始多次。

另外,我尝试用“ preloadjs”替换所有对“ createjs”的引用。问题在于全局对象“ 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,只需返回PreloadJS变量引用而不是createjs。

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


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

关于javascript - RequireJS不加载createjs,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33877508/

10-11 13:52