我有一个不能一致加载的requirejs应用程序。通常它只要我在缓存的内容集上工作,但这并不是一个大惊喜。但是,清除缓存几乎总是导致脚本不存在。
我没有在我的应用程序之外包含依赖项 - 所有内容都包含在define()依赖注入中。
我的main.js文件包含以下内容,它是使用data-main每个requirejs标准启动的:
define(
["vendor/preloadjs", "router"],
function (createjs, router) {
//At this point all controllers are loaded and ready to go
console.log("main controller"); //This successfully fires every time
return {};
}
);
我的主控制器包含以下内容:
define(
["vendor/crossroads", "vendor/hasher"],
function(xr, h) {
console.log(xr, h);
return {};
}
);
问题在于router.js:
{
noConflict: ()
parse: parse()
runInContext: a(b, d)
stringify: stringify()
__proto__: Object
}
此文件中的日志通常输出十字路口的正确对象(在本例中为xr),有时将输出正确的对象(h)。然而,在没有缓存内容的情况下刷新时,10个中的3或4次(使用缓存刷新时)和10次中的10次中断10次。它并没有始终如一地突破。有时十字路口将是未定义的,有时候将会是以下对象:
{{1}}
有时,signals.js(为主要js文件中的路径配置中定义的hasher和crossroads定义的依赖关系)无法加载,我得到其他错误,例如a.Signal未定义。
我在这里看到的是我的回调在我的依赖项加载之前被触发。所有这三个依赖项都是amd / require启用的,并且它们在某些时间工作。 require.js的全部要点是在加载依赖关系树之前不要触发回调吗?我错过了什么?
感谢!!!