15

我在使 RequireJS 文本插件工作时遇到了一些问题。这可能是与路径相关的问题(或类似的明显问题),但我无法解决它,因为 chrome 控制台(打开 xhr)和 firebug 都没有给我任何信息

未捕获的错误:模块的加载超时:文本
http://requirejs.org/docs/errors.html#timeout

我很确定路径没问题,但我找不到任何其他解释。有人知道如何调试吗?

我在服务器端使用 node.js 和 express,在客户端使用主干和 jQuery。所有这些都可以通过 RequireJS 正确加载。

4

5 回答 5

4

估计是路径问题。我有相同的设置(节点/快递和主干),它似乎对我有用。这是我的 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;
});
于 2012-01-03T19:07:17.523 回答
1

由于它在您的 Windows 手机上,请尝试将“waitSeconds”设置为更高的数字。

移动速度很慢,但默认情况下 require.js 会在 7 秒后超时,这对于移动体验/或互联网访问速度较慢的用户来说通常是低的。

文档:http ://requirejs.org/docs/api.html#config-waitSeconds

于 2012-11-06T04:05:36.187 回答
1

我原来的答案

我在这里回答了一个类似的问题,指向官方的require.js 故障排除页面

在我的情况下,仅当开发人员控制台在 chrome 上打开单个 macbook 上的多个 chrome 版本时才会发生此错误。其他设备没有显示问题。因此,我可以通过更改那台计算机上的配置来确定。

等待秒

waitSeconds选项可以配置为无限(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) 禁用超时,我不建议将此选项用于生产代码!如果您在任何地方运行代码或禁用超时都没有帮助,请继续阅读。

此问题的 3 个常见原因

  • 您正在加载的模块中的错误
  • 配置中的错误路径(检查pathsbaseUrl选项)
  • 配置中的双重输入

有关此主题的更多信息,请查看顶部链接的原始答案。

于 2014-01-23T14:49:51.990 回答
0

错误地使用语法糖时出现此错误。您不能既定义依赖关系又使用require工厂函数。

//THIS WILL FAIL
define(['require'], function (require) {
    var namedModule = require('name');
});

文档中

这会失败,因为 requirejs 需要确保在调用上面的工厂函数之前加载并执行所有依赖项。如果给define()一个依赖数组,那么requirejs假定所有依赖都列在那个数组中,它不会扫描工厂函数来寻找其他依赖。因此,要么不传入依赖数组,要么如果使用依赖数组,则列出其中的所有依赖项。

所以如果你指定一个依赖数组,你就不能同时依赖糖语法来工作。在我看来并不理想,但这就是创建 requirejs 的方式。

于 2013-08-30T15:47:08.050 回答
0

Require.js 向我的文件发出请求text.js,但响应是302- 我的用户未通过身份验证。因此,text插件无法加载。因此我所有的文本资源都无法加载: text!any/name.html

我的控制台给了我一条相关消息,另一个提示我的text插件无法加载:

无法读取未定义的属性“规范化”

于 2019-06-06T16:47:08.360 回答