间歇的RequireJS加载错误怎么解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (88)

我有一个使用RequireJS的相当大的Backbone.js项目。随着项目规模的增长,间歇性错误开始出现。大多数时候,这是一个对象错误:

Uncaught TypeError: object is not a function

偶尔,它会抛出一个模块没有被加载。

一旦项目通过r.js优化器运行,这些错误就会消失。它们仅在RequireJS加载单个模块时发生。

当模块数量达到一定数量时,RequireJS是否会开始模块加载问题?

提问于
用户回答回答于

这绝对是我在过去几天遇到的一个错误。加载一个模块会导致应用程序不同部分中的第二个完全不相关的模块在之前完美工作的位置变得未定义。 这不是一个脚本加载或循环依赖问题。起初我在第二层视图中需要一个文本文件时经常遇到错误,该文本文件被迭代了好几次:

domReady -calls-> new View1() -iterates-> new SubView() -depends-> text!template
         -calls-> new View2() --> undefined!

这会导致其他地方完全不相关的模块变得未定义。我通过将SubView功能集成到View模块中来解决它。

domReady -calls-> new CombinedView1() -depends-> text!template
         -calls-> new View2() --> ... all good ...

随着项目的发展,我再次碰壁,真的需要找到解决方法。

我花了一些时间创建了一个我的应用程序的版本,它具有相同的模块和依赖性结构,而依赖的视图,模型和集合已被删除。这工作得很好,所以我只能假设存在某种内存问题?但Chrome从不抛出任何错误。

更新: 此依赖关系结构一致地打破:

Main
  - View 1
      - text!...
      - View 2
         - text!...

用空字符串代替文本每次都能正常工作:

Main
  - View 1
      - View 2

那么为什么等待文本加载会导致View 1在主模块中显式设置为依赖项时变为未定义?

扫码关注云+社区

领取腾讯云代金券