我在这两个字母后面都跟随了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/