AngularJS 不能在浏览器重新加载时运行

Posted

技术标签:

【中文标题】AngularJS 不能在浏览器重新加载时运行【英文标题】:AngularJS doesn't run on browser reload 【发布时间】:2015-11-24 12:31:21 【问题描述】:

我有一个使用以下组件的新项目:

    Node.js (v0.10.37) 快递微框架 Jade 模板引擎 Angular.js(最新) 材料设计库 (material.angularjs.org) jQuery

我在重新加载浏览器时遇到问题(点击浏览器刷新按钮)。我没有使用任何 Angular.js 路由功能。我正在使用 Express 路由器,并且每个页面都有一条路由。

当我尝试刷新时,使用此组件构建的页面有时(20 次重新加载中的 1 次)AngularJS 无法运行而没有任何控制台错误。

当我在以下路线之间导航时,该问题更为常见:

我在 localhost:3000/index 上,我进入 localhost:3000/about

这种情况下更容易出现这个问题。

编辑:我没有使用任何 AngularJS 路由功能。

编辑:我还测试了 DOMContentLoaded 包装解决方案。

编辑:我附加了一个 plunker,但 问题没有重现。我认为它也与服务器有关。 plunker真的很接近现实。

ng-app="StarterApp"
See the plunker :)

编辑: http://plnkr.co/edit/Vi1AQxNxJTDBf4B1ZEhr?p=preview

编辑:如果您遇到 plunker 上的错误,请告诉我。

编辑:我也尝试激活:$locationProvider.html5Mode(true);

编辑: 我还发现当服务器和计算机(在 localhost 上运行)确实压力很大时会发生这种情况。 (82% RAM - 1 个 CPU 内核,99%)

我还跟踪了请求,发现文件在主请求上正确加载,但在 Angular 中完成的请求(Ajax 请求)没有触发。

我还安装了一些 Chrome AngularJS 调试插件,但出现这种情况时它也无法运行。

这种情况有时会发生在我的所有页面上,所以我认为某些代码不会有用。

为了解决这个问题,我再次重新加载,有时我重新加载 2 次以启动 Angular.JS。

有以下几种情况:

工作时

界面

控制台

当它不工作时

界面

控制台

这真的让我很烦。我将继续调查此问题,但我将非常感谢任何帮助。

【问题讨论】:

你能复制它并在线发布吗? 我会尝试,我会回来的链接:) 在线示例会很棒,但您的快速代码/静态路由也会有所帮助。 【参考方案1】:

埃弗里卡!

我发现了问题。谢谢大家的支持。

是angular.js调试chrome/firefox扩展的问题。

Ng-Inspector 在每次加载时加载一个脚本 ng-inspector.js,在这个脚本中,它是一个控制器,处理 $state 服务并声明如何加载用户模块以便将调试数据推送到插件中。

不知何故,这个加载配置与我的加载配置混淆了。

代码写得很好,但我没有想到这一点。

因此,如果您遇到此问题,请确保您的调试插件(ng-inspectorangular batarang)不会与项目内的业务逻辑交互。

我进行了一些压力测试以确保不再出现此问题。

服务器负载

现在一切正常。

【讨论】:

以上是关于AngularJS 不能在浏览器重新加载时运行的主要内容,如果未能解决你的问题,请参考以下文章

Angularjs - 加载多次的相同图像

IFrame 中的 AngularJS run() 方法不会在 iframe 重新加载时重新运行

Cordova 上的 AngularJS $resource POST 调用不能在 iOS/Android 设备上运行,但可以在浏览器上运行

如何重新加载在浏览器中运行 Silverlight 应用程序的默认 AppDomain?

每当节点服务器重新启动时重新加载浏览器

Blazor-断开连接后重新加载浏览器