我在使RequireJS文本插件工作时遇到了一些问题。这可能是一个与路径相关的问题(或类似的东西),但我无法解决它,因为Chrome控制台(xhr打开)和firebug都没有给我任何信息
Uncaught Error: Load timeout for modules: text http://requirejs.org/docs/errors.html#timeout
我很确定路径没问题,但我找不到任何其他解释。有人知道如何调试这个吗?
我在服务器端使用node.js表达,在客户端使用主干和jQuery。所有这些都可以通过RequireJS正确加载。
答案 0 :(得分:3)
我猜这是一个路径问题。我有相同的设置(节点/快速和主干),它似乎对我有用。这是我的main.js文件:
require.config({
paths: {
jquery: 'libs/jquery-1.7.1.min',
underscore: 'libs/underscore',
backbone: 'libs/backbone',
text: 'libs/text',
templates: '../views',
persist: 'libs/persist/persist'
}
});
require([
'app'
], function(App){
App.initialize();
});
以下是我在模块中调用插件的方法:
define([
'jquery',
'underscore',
'backbone',
'collections/sub_elements',
'collections/elements',
'views/element',
'text!../../../views/partials/_elements.html'
], function($, _, Backbone, sub_elementsCollection, collection, view, template){
var elementsView = Backbone.View.extend({
// ... //
});
return elementsView;
});
答案 1 :(得分:1)
就像在Windows手机上一样,尝试将“waitSeconds”设置为更高的数字。
移动速度很慢,但默认情况下,在7秒后,require.js会超时,这通常会降低移动体验/用户访问速度慢的用户。
答案 2 :(得分:1)
I answered a similar question here指向官方require.js troubleshooting pages。
在我的情况下,只有当Chrome上的开发者控制台打开时,才会在单个macbook上为多个chrome版本发生此错误。其他设备没有显示问题。因此我可以通过更改该单台计算机上的配置来实现。
waitSeconds option可以配置为无限(0)或您想要的任何值(以秒为单位)。默认值为7秒。示例配置:
<script src="scripts/require.js"></script>
<script>
require.config({
baseUrl: "/another/path",
paths: {
"some": "some/v1.0"
},
waitSeconds: 0
});
require( ["some/module", "my/module", "a.js", "b.js"],
function(someModule, myModule) {
//This function will be called when all the dependencies
//listed above are loaded. Note that this function could
//be called before the page is loaded.
//This callback is optional.
}
);
</script>
由于无限(0)禁用超时,我不建议将此选项用于生产代码!如果遇到此问题,在任何地方运行代码或禁用超时都无济于事,请继续阅读。
paths
和baseUrl
选项)有关此主题的更多信息,请查看最常见的原始答案。
答案 3 :(得分:0)
错误地使用syntax sugar时出现此错误。
您不能同时定义依赖关系并使用require
工厂函数。
//THIS WILL FAIL
define(['require'], function (require) {
var namedModule = require('name');
});
这会失败,因为requirejs需要确保加载并执行所有操作 在调用上面的工厂函数之前的依赖关系。如果一个 依赖数组赋予define(),然后requirejs假定全部 依赖项列在该数组中,它不会扫描 其他依赖项的工厂函数。所以,要不要传入 依赖项数组,或者如果使用依赖项数组,则列出所有 依赖于它。
因此,如果指定依赖关系数组,则不能依赖于糖语法。在我看来并不理想,但这就是如何创建requirejs来运作。
答案 4 :(得分:0)
Require.js请求了我的text.js
文件,但响应为302
-我的用户未通过身份验证。因此,无法加载text
插件。因此,我所有的文本资源均无法加载:text!any/name.html
。
我的控制台给了我一条相关消息,提示我的text
插件无法加载:
无法读取未定义的属性“规范化”