- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我加载 AngularJS 应用程序的缩小版(通过 UglifyJS)时,我在控制台中收到以下错误:
Unknown provider: aProvider <- a
现在,我意识到这是由于变量名修饰造成的。未损坏的版本工作得很好。然而,我确实想要使用变量名修改,因为它大大减少了 JS 输出文件的大小。
因此,我们使用 ngmin在我们的构建过程中,但它似乎没有解决这个问题,尽管它在过去为我们提供了很好的服务。
因此,为了调试此问题,我在 uglify grunt 任务中启用了源映射。它们生成得很好,Chrome会从服务器加载 map 。然而,我仍然收到同样无用的错误消息,尽管我的印象是我现在应该看到提供者的原始名称。
如何让 Chrome 使用源映射来告诉我哪个提供商存在问题,或者如何以其他方式找到提供商?
最佳答案
我仍然很想知道如何在源代码中找到导致此问题的位置,但我已经能够手动找到问题了。
在全局范围内声明了一个 Controller 函数,而不是在应用程序模块上使用 .controller()
调用。
所以有这样的事情:
function SomeController( $scope, i18n ) { /* ... */ }
这对于 AngularJS 来说效果很好,但是为了使其能够正确地处理重整,我必须将其更改为:
var applicationModule = angular.module( "example" );
function SomeController( $scope, i18n ) { /* ... */ }
applicationModule.controller( "SomeController", [ "$scope", "i18n", SomeController ] );
经过进一步的测试,我实际上发现了更多 Controller 的实例也导致了问题。这就是我如何手动找到所有这些资源的来源:
首先,我认为在uglify选项中启用输出美化相当重要。对于我们繁重的任务来说,这意味着:
options : {
beautify : true,
mangle : true
}
然后我在 Chrome 中打开了项目网站,并打开了 DevTools。这会导致记录如下错误:
我们感兴趣的调用跟踪中的方法是我用箭头标记的方法。这是providerInjector
in injector.js
。您需要在引发异常的地方放置一个断点:
当您现在重新运行应用程序时,将命中断点,您可以向上跳转调用堆栈。将会有来自invoke
in injector.js
的电话,可从“不正确的注入(inject) token ”字符串中识别出来:
locals
参数(在我的代码中被修改为 d
)可以很好地了解源中的哪个对象存在问题:
对我们的源代码进行快速 grep
发现了 modalInstance
的许多实例,但是从那里开始,很容易在源代码中找到这个位置:
var ModalCreateEditMeetingController = function( $scope, $modalInstance ) {
};
必须更改为:
var ModalCreateEditMeetingController = [ "$scope", "$modalInstance", function( $scope, $modalInstance ) {
} ];
如果变量不包含有用的信息,您还可以进一步跳转堆栈,并且您应该调用 invoke
,其中应该有其他提示:
现在您希望已经找到了问题,我觉得我应该提到如何最好地避免将来再次发生这种情况。
显然,您可以使用inline array annotation任何地方,或(取决于您的喜好)$inject
property annotation并且以后尽量不要忘记它。如果您这样做,请确保启用 strict dependency injection mode ,尽早发现这样的错误。
Watch out! In case you're using Angular Batarang, StrictDI might not work for you, as Angular Batarang injects unannotated code into yours (bad Batarang!).
或者你可以让 ng-annotate搞定此事。我强烈建议这样做,因为它消除了该领域许多潜在的错误,例如:
使注释保持最新状态简直是一件痛苦的事,如果可以自动完成,您就不必这样做。 ng-annotate 正是这样做的。
它应该可以很好地集成到您的构建过程中 grunt-ng-annotate和 gulp-ng-annotate .
关于angularjs - "Unknown provider: aProvider <- a"如何找到原始提供商?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21688681/
正在复制的问题是,当sew呈现登录页面时,然后我们继续执行身份验证,现在将我们重定向到网站的仪表板,此时我们继续关闭会话,并且在之前的交互中生成的这些cookie没有被删除。这个问题是重复性的,并且一
我是 Flutter 的新手,目前正在研究 DI。 我正在使用 flutter_bloc 和 provider 包。 flutter_bloc 附带一个 RepositoryProvider,我现在问
我是 Flutter 的新手,目前正在研究 DI。 我正在使用 flutter_bloc 和 provider 包。 flutter_bloc 附带一个 RepositoryProvider,我现在问
我正在使用 Angular2 开发一个应用程序。 我正在尝试在我的应用程序中使用 Reactive Forms,但我遇到了一些错误: 第一个错误是关于 NgControl 的,如下所示: No pro
最近很多用户在使用电脑的时候发现了wmi provider host进程占用内存比较大,不知道这个进程到底是干什么的,能不能禁止,怎么禁止。下面来一起看看想想的介绍吧。 wmi provide
我的问题是: 当我在设计时不知道这些表达式的数量和类型时,如何将列表中的表达式拼接成一个引用? 在底部,我包含了类型提供程序的完整代码。 (我已经剥离了这个概念来证明这个问题。)我的问题出现在这些行:
我目前正在学习使用 Flutter 进行应用程序开发,并已开始学习 Provider 包。我遇到了一些困难并收到错误: “在此...小部件之上找不到正确的提供者” 我最终移动了 Provider 小部
我是 android 的新手,我正在学习如何使用 JavaMail API 发送电子邮件的教程,我已经正确添加了必要的 Jar,但我总是遇到无法解析 GmailSender 类上的符号提供程序,我尝试
我正在我的 Angular 应用程序中进行单元测试,我正在使用 TestBed 方法, 我正在测试组件,所以每个规范文件看起来像这样 import... describe('AppComponent'
enter image description here 代码:这是我的 index.js 文件 index.js import { Provider } from "react-redux"
Microsoft ASP.NET Universal Providers 1.1昨天与System.Web.Providers 1.2一起发布.在后面的 nuget 页面上声明:Legacy pac
在我的 Next js 项目中,我使用了 Next auth,其中 import {Provider} from 'next-auth/client' , 并包裹 在 _app.js 中。 但是,与此
当我在 View 模型中使用如下界面时 class MainViewModel @ViewModelInject constructor( private val trafficImagesR
更新 - 我实际上发现它是 Flutter Issue . 我有两个 Provider,一个是 EntriesProvider,另一个是 EntryProvider。我在创建条目时使用我的 Entry
function configure($provide, $injector) { $provide.provider("testservice", function () {
这真让我抓狂。我似乎无法弄清楚这有什么问题。 代码: public interface IMinutesCounter { void startTimer(); void stopTi
我在我的项目中玩 Dagger 2,然后我陷入了这个错误编译。-> Error:(18, 21) error: ....MyManager cannot be provided without an
我有一个 Resteasy 应用程序,它使用 Spring 并包含 ContainerRequestFilter 和 ContainerResponseFilter 实现,并用 @Provider 注
我正在尝试使用 Dagger2 设置一个新项目,我以前使用过 Dagger2,但现在我正在尝试自己从头开始设置它。我正在从我参与的 Kotlin 项目中获取示例,但无法像现在在 Kotlin 中一样为
我刚开始学习 dagger2,遇到了一个奇怪的问题,在我看来像是一个错误。这是模块: @Module public class SimpleModule { @Provides Coo
我是一名优秀的程序员,十分优秀!