0

缩小时,我遇到了一些著名的角度问题。

我昨天提交的几个 PR 试图解决这个问题,但这些似乎并没有解决问题。

在没有缩小的情况下构建时,一切都按预期工作。

当使用缩小构建但从我的应用程序模块中删除对“着名.angular”的依赖时,应用程序会优雅地降级为仅角度,因此布局很糟糕,但底层的角度应用程序按预期工作,没有错误。

当使用 minification 构建时,应用程序模块依赖于“着名的.angular”,应用程序根本不会加载,并出现以下错误:

Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to:
Error: [$injector:modulerr] Failed to instantiate module famous.angular due to:
Error: [$injector:unpr] Unknown provider: t
http://errors.angularjs.org/1.2.23/$injector/u...<omitted>...2)

通过使用这种方法,我能够确定哪个函数没有被正确地缩小,并触发了 Angular 的依赖注入:

function LocationHashbangInHtml5Url(appBase, hashPrefix) { /* ... */ }

这是在核心角度文件 -angular.js中,它确实在其他情况下正确缩小。所以我不确定为什么当我在我的应用程序模块中包含“着名的.angular”时,这会引入错误。

有人知道这里有什么问题吗?


问题演示:

git clone git@github.com:bguiz/browserify-gulp-starter.git
cd browserify-gulp-starter
npm install famous
bower install --save angular angular-route famous-angular
# edit gulpoptions.js
# appName: 'app',
# appFolder: './src-famousangular/app/',
gulp serve-dist
4

1 回答 1

0

我之前将这两个 PR 提交给了着名的 Angular,以为我已经抓住了所有的$inject场景:

原来我错过了第三个,现在已经提交了一个补丁:

在我上面的问题中,我说function LocationHashbangInHtml5Url(appBase, hashPrefix) { /* ... */ }angular/angular.js是没有正确缩小的函数。这是不正确的,罪魁祸首实际上是famous-angular/src/scripts/directives/fa-input.js.


对于好奇的人,这是我用来解决上述问题的过程。作为额外的奖励,我碰巧发现了一种在调试缩小的 AngularJs 应用程序中的依赖注入错误时使用的额外技术。

事实证明,我在上面链接的技术(https://stackoverflow.com/a/25126490/194982并不总是能正常工作。

最终起作用的是向上遍历执行堆栈,直到我们到达invoke()函数,如该技术中所述。然后,不要只检查,而是fn查看Scope Variables开发人员工具中的选项卡,并检查作为函数的每个作用域成员。

这样撒的网就更大了,需要检查的东西也更多了;但在这种情况下是必要的,我怀疑可能适用于其他人。

于 2014-09-03T04:58:02.520 回答