【问题标题】:Chrome extension hint.js & ngHintModulesChrome 扩展 hint.js 和 ngHintModules
【发布时间】:2018-01-01 01:27:16
【问题描述】:

我们的 Angular 应用有时无法在 chrome canary(版本 41.0.2237.0 canary(64 位))上加载

无法实例化模块 ngHintModules,原因是:RangeError:Maximum 超出调用堆栈大小

但它在 firefox、chrome(版本 39.0.2171.71(64 位))、safari 中加载良好。

可能不确定是否与角度有关。

完全错误

Uncaught Error: [$injector:modulerr] Failed to instantiate module ngHintModules due to:
RangeError: Maximum call stack size exceeded
    at Array.forEach (native)
    at module.exports (chrome-extension://ighdmehidhipcmcojjgiloacoafjmpfk/dist/hint.js:2333:21)
    at module.exports (chrome-extension://ighdmehidhipcmcojjgiloacoafjmpfk/dist/hint.js:2384:5)
    at chrome-extension://ighdmehidhipcmcojjgiloacoafjmpfk/dist/hint.js:2387:7
    at Array.forEach (native)
    at module.exports (chrome-extension://ighdmehidhipcmcojjgiloacoafjmpfk/dist/hint.js:2385:21)
    at chrome-extension://ighdmehidhipcmcojjgiloacoafjmpfk/dist/hint.js:2387:7
    at Array.forEach (native)
    at module.exports (chrome-extension://ighdmehidhipcmcojjgiloacoafjmpfk/dist/hint.js:2385:21)
    at chrome-extension://ighdmehidhipcmcojjgiloacoafjmpfk/dist/hint.js:2387:7

注意:我在这里显示的错误来自

版本 41.0.2237.0 金丝雀(64 位)

【问题讨论】:

  • 他们一定是刚刚将更新推送到 chrome 商店,因为我现在也收到了。
  • 是的,这个错误是今天早些时候由 Chrome AngularJS Batarang 扩展的新 0.5.0 版本引入的。暂时禁用它,直到修复 github.com/angular/angularjs-batarang/issues/157
  • 昨晚在一个项目上加班到很晚,改了很多代码,今天起床还是不行。在摸索了 30 分钟后,一个快速的谷歌将我带到了这里。这个问题也影响了我。
  • 0.7.4 刚好发生在我身上

标签: angularjs google-chrome google-chrome-extension


【解决方案1】:

我也遇到了这个问题,通过禁用 Batarang 解决了。

【讨论】:

  • 虽然此解决方案有效,但您可以找到临时解决方法here
  • 虽然有用,但这个答案应该指向 ppoliani 的答案,它既正确又向您展示了如何通过使您的代码更干燥来解决它。
【解决方案2】:

此问题在 Batarang Github 上打开:https://github.com/angular/angularjs-batarang/issues/156

您可以从此 zip 文件中加载先前版本的 Batarang:https://github.com/angular/angularjs-batarang/archive/v0.4.3.zip

  1. 打开更多工具->Chrome 中的扩展
  2. 找到 AngularJS Batarang 并点击垃圾桶以删除扩展
  3. 下载.zip
  4. 解压文件
  5. 打开更多工具->Chrome 中的扩展
  6. 在顶部检查开发者模式
  7. 点击“加载解压后的扩展”
  8. 选择解压 zip 的目录
  9. 如果您收到有关清单文件的错误,则可能是您选择的目录级别太高。确保选择底层 angularjs-batarang-0.4.3 目录
  10. 加载一个 AngularJS 页面,然后像以前一样通过 Inspector 再次使用 Batarang

这将恢复以前的版本,尽管存在问题,但它确实具有一些主要工作功能,例如性能分析、范围检查器、选项和帮助选项卡,这些功能已从最新版本中消失。 0.7.1 版本修复了应用程序的主要损坏,但它仅提供范围树(无检查器)和新的 angular-hint 功能。

【讨论】:

  • 注意:您可能还需要在控制台的 AngularJS 选项卡中启用然后禁用 Batarang,以便重新激活对控制台中“$scope”的访问。
  • 在应用上述步骤后,我还必须禁用较新版本。我有 2 个 Batarang 要去。
  • 谢谢,刚刚添加了一个步骤,在安装解压后的 0.4.3 版本之前先禁用扩展。 Brian 已向 Chrome 商店推出了 0.7.1 版本,该版本有一些修复。不过我不确定它是否稳定。
【解决方案3】:

您不需要禁用 Angular 蝙蝠镖;只需执行以下操作:

  1. 打开开发者工具并导航到 hint.js 文件(触发堆栈溢出的文件)
  2. 转到第 453 行添加断点
  3. 重新加载应用程序,当它遇到断点时,只需将其注释掉 (setupModuleLoader(window)) 并单击继续
  4. 它仍然会抛出异常,(未捕获的 ReferenceError:未定义角度)但您将能够运行 Batarang

我知道这不是最好的解决方案,但这是我能找到的最快的方法,而无需深入研究问题

更新

进一步检查正在发生的事情我注意到当我们定义了多个模块并且我们为所有模块添加相同的依赖项时会发生问题。

例如:

angular.module("app", ["moduleB", "moduleC"]);
angular.module("moduleB", ["moduleC"]);

当我定义 moduleB 而不传递与它的父模块相同的 deps 时,没有堆栈溢出。

angular.module("moduleB", []);

【讨论】:

  • 感谢分享这个,你为什么不创建一个 plunker 并将这个问题发布到 ngHint github 上?因为它实际上来自 ngHint 模块,而不是 Batarang 本身。显示冗余是问题的根源是好的
  • 好地方!我已经要求最佳答案指向您的答案,因为这既正确又更有用。
【解决方案4】:

我们的团队刚刚遇到此错误,已通过将 Chrome 中的 Batarang 扩展程序更新到最新版本来解决此问题。

【讨论】:

  • 这修复了应用程序的完全损坏,但它仍然抛出了一些由扩展引起的异常。您还将失去拥有范围检查器、性能选项卡、依赖关系图、选项和帮助选项卡的能力。
【解决方案5】:

更新... 随着 Chrome 的新更新,问题又回来了,所以如果有人遇到此错误,请恢复到以前的 Chrome 版本。 所有可用的版本都在这里,不要选择第一个。 http://www.slimjet.com/chrome/google-chrome-old-version.php 那么它应该可以正常工作!

【讨论】:

    【解决方案6】:

    我在使用 GitHub pages 网站(使用 Jekyll)时遇到了同样的问题。
    搜索了几个小时为什么 AngularJS 应用程序没有出现(ng-cloak 从未解决)。
    发现是 Batarang 导致了问题。

    非常感谢@kpganswer

    【讨论】:

      猜你喜欢
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多