Javascript RequireJS无序执行-不尊重'require'的论点`
当以我理解为普通的方式使用CoffeeScript构建和运行RequireJS时,我似乎遇到了一个问题,代码没有按照预期的顺序执行Javascript RequireJS无序执行-不尊重'require'的论点`,javascript,requirejs,js-amd,Javascript,Requirejs,Js Amd,当以我理解为普通的方式使用CoffeeScript构建和运行RequireJS时,我似乎遇到了一个问题,代码没有按照预期的顺序执行 <script src="/_s/lib/require-jquery.js"></script> <script> require.config({ paths: { "main": "/_s/all.min", // <--- the 'optimized' result of `$ r.js b
<script src="/_s/lib/require-jquery.js"></script>
<script>
require.config({
paths: {
"main": "/_s/all.min", // <--- the 'optimized' result of `$ r.js build.js`
}
});
require(["main"], function () {
// this executes without any regard to whether 'main' is loaded.
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// also:
// require('cs!csmain') throws an exception because "cs!csmain" has not been
// loaded for context: '_'.
});
以及作为r.js
参数调用的build.js
,如下所示:
({
baseUrl: 'mycode',
optimize: 'none',
out: 'all.min.js',
stubModules: ['cs', 'coffee-script'],
paths: {
...
underscore: '../lib/lodash'
},
name: 'main',
shim: {
...
}
})
有人知道这里发生了什么吗?我真的很享受RequireJS的异步特性,以及将代码拆分为合理模块的能力,但这个问题尤其令人沮丧,因为它只在登台/生产设置中出现
如有任何想法和建议,将不胜感激
EDIT:删除了一些可能多余的参数以缩短问题。我相信我已经解决了这个问题-
main.js
应该包含对define
的调用,就像我一样。Brian,您是否在某个网站上发布了此代码,以便我们可以尝试调试以查看发生了什么?因为查看您的配置,我没有发现任何错误,可能正在调试…@devundef:谢谢您的评论。我觉得代码看起来也不错。:)经过几个小时的调试,我只是把问题缩小到上面。我可以尝试在JSFIDLE中重现这个问题,但需要休息一下,这样我才不会先发疯有时代码会让我们发疯,不是吗?:)好吧,如果你能重现JSFIDLE中的错误,那就更好了。@devundef:根据我下面的回答,我有可能解决了这个问题。祈求好运。哇,我总是在我的主模块中使用require,而这个问题从未发生过。但是使用define()而不是require()更有意义。请告诉我这是否解决了。@devundef:我总是在我的主要模块中加入require
——我认为这就是解决问题的方法(我隐约记得define
在某些情况下在main.js
中存在问题)。我期待着发现我所做的是否真的是“正确”的解决方案。
({
baseUrl: 'mycode',
optimize: 'none',
out: 'all.min.js',
stubModules: ['cs', 'coffee-script'],
paths: {
...
underscore: '../lib/lodash'
},
name: 'main',
shim: {
...
}
})