我在我的应用程序中有几十个导入,经过一个巨大的重构与官方的Angular2样式指南一致,我得到了臭名昭着的无效提供程序错误。我正在使用RC4。
reflective_provider.js:170Uncaught Invalid provider - only instances of Provider and Type are allowed, got: undefined
我该如何调试?我需要知道哪些导入/提供商是错误的。
这些是我的进口商品:
https://gist.github.com/nottinhill/4d61beb9e3a05a6cfc11c65fcb4ad89a
这是我的Ionic bootstrap:
https://gist.github.com/nottinhill/c8ef4f0f760af2f5a23ebeac35d6113b
答案 0 :(得分:1)
在Angular2-RC4中provide
@angular/core
已弃用。你必须按如下方式定义你的提供者:
ionicBootstrap(MyApp, [
GoalService,
{
provide : TranslateLoader,
useFactory: (http: Http) => new TranslateStaticLoader(http, 'assets/i18n', '.json'),
deps: [Http]
},
TranslateService,
{
provide : AuthHttp,
useFactory: (http) => {
return new AuthHttp(
new AuthConfig(),
http
);
},
deps: [Http]
},
AuthService,
AuthServerService,
AuthServerMock,
AuthZeroService,
AuthZeroMock
]);
答案 1 :(得分:1)
根本原因是我的模块层次结构中的简单导入循环依赖。解决方案是在模块和服务导向中通过'../shared/service/service.service.ts'而不是'../shared/'明确导入。
Barell使用“../shared/index”在更高层次中导入工作正常。